早期java捕捉異常的語法是這樣的:
try{
//do something
}catch(Exception e){
//handle it
}finally{
}
而到了JDK7之后,可以使用try-with-resources和multiple catch:
try(FileInputStream inputStream = new FileInputStream(new File("test")){//try-with-resources
//do something..
}catch(IOException | Exception e){//multiple catch
//handle it
}finally{
...
}
若在try()中定義多個資源的話挣饥,用分號隔開绞吁。
在try-catch-resources語句中军援,會先關閉try()中的資源绍些,然后執(zhí)行catch塊的語句可训,再執(zhí)行finally塊中的語句膘滨。
try(FileInputStream inputStream = new FileInputStream(new File("test");Resource resource = new Resource()){
//do something
}catch(Exception e){
}finally{
}
在try-with-resources語句中甘凭,AutoCloseable會被調(diào)用并自動釋放資源。資源關閉的順序和資源定義的順序相反火邓。
InputStream和OutputStream都繼承了AutoCloseable
如果是自己定義的類丹弱,需要實現(xiàn)AutoCloseable接口。