public
static
void
main
(string[
] args)
catch
(ioexception e)
finally
catch
(ioexception e)
catch
(nullpointerexception e)
} system.out.
println
("不影響我的輸出");
}
得到的結果為:
① 宣告fw寫在最外面是因為如果寫在try中,那麼finally中的fw呼叫步到fw,作用域範圍不夠
② 宣告fw並且讓他等於null是因為,如過不賦值的話,那麼如果try中的**出現了異常,那麼fw就處於沒有被賦值的狀態,然後再finally中呼叫的話,會出現異常,因為這時候fw沒有被賦值
③ 再finally中還處理了空指標異常是因為,如果try中報錯了的話,我賦的值是null,所以再finally中fw等於null,那麼在呼叫fw的話會出現空指標異常,所以需要處理
在jdk1.7當中,tr後面可以增加乙個括號,在括號中我們可以用來定義流物件,那麼這個流物件的作用域在try中有效,在try中的**執行完畢後,就會自動把流物件釋放,不用我們把流物件定義在try的外面,不用考慮定義域的問題,並且在try中的**執行完畢後,自動把流物件釋放,不需要我們寫finally來close釋放流物件,使用起來很方便
ublic static
void
main
(string[
] args)
catch
(ioexception e)
system.out.
println
("不影響我的列印輸出");
}
得到的結果為:
① 我們在使用這種方式的優點就是它可以自動釋放我們定義在括號當中的流物件,不需要我們手動在finally**塊中釋放流物件有關資源
② 同時我們不需要考慮變數的作用範圍導致的一些問題
在jdk9中可以在try的前面可以定義物件,在try後面的括號當中可以直接引用物件名稱(變數名),在try**執行完畢後,流物件也可以釋放掉,不用我們自己去釋放
JAVA 在lambda流中處理異常
在lambda中處理檢查異常是個比較大的問題,有的時候我們會將它轉換成乙個執行時異常再向上丟擲 mylist.stream map item catch myexception e foreach system.out println 或者這樣 mylist.stream map this trys...
java中異常處理中的異常匹配
先貼上 class annoyance extends exception class sneeze extends annoyance public class test catch sneeze s catch annoyance a catch派生物件 trycatch annoyance a...
異常控制流中的fork()
fork是用於建立子程序的函式,他和其他的函式有所區別,有趣的是 int main printf bye n exit 2 這個例子中wafexited指的是如果子程序通過呼叫exit或者乙個返回 return 正常終止,就返回真,wexitstatus是指返回乙個正常終止的子程序的退出狀態。搞清楚...