TMD 到底什么是異常
程序按照預期的流程運行..正常態
出現未預計到的情況..比如網線斷了gddg...文件打開失敗...
這個時候 程序是繼續執行 還是 其他的選擇 或者 退出app ....
實際的情況是 有可能可以恢復,從業務角度出發..我可以重新試圖連接...可以重新打開文件或者換一個文件 或者重新創建一個新的文件....
只要不是致命的問題..通常是可以恢復的...沒必要退出app...
如果你不捕獲 網絡斷開或者文件無法打開的 異常 ...那么為什么程序退出了呢...因為你沒有告訴你的程序 如果出錯了應該怎么辦...sun 規避風險,你出錯了,可能下一步要錯誤的扣除你工資,為了解除這種不確定執行的巨大風險...那么就把你app shutdown了....
如果你有catch 對于程序來說 你有防備 出現異常的準備...那么真到了異常 那么就看你異常的處理流程 是否奏效....
異常體系....瞎扯淡...就是幾個異常類的繼承關系(虛擬機內部異常,用戶定義異常 ...).....還能有什么 .
無非是 根據不同的出錯類型來 包裝異常...給這個這種類型的異常 或者 這類問題取一個名字....
當你沒看堆棧信息的時候大概可以 判斷一下 問題再那里而已.....
異常來跳轉 程序是因為 無法預期異常后下步該如何執行 所以跳轉...
異常是比較消耗系統資源的.
.net 為什么沒有主動要求你 拋出異常....
因為.net的主要架構師 再設計.net時候看到了 很多程序員 一層一層的拋出異常只在最底層 main中截獲異常....
那么大量的函數都是 throws 其實根本無意義....所以他再設計的時候就沒有采取和java 相同的方式 .