1. 程式人生 > >異常,斷言和日誌(一)

異常,斷言和日誌(一)

錯誤發生之後應該怎麼辦:

•向用戶通告錯誤;

•儲存所有的工作結果;

•允許使用者以妥善的形式退出程式。 

Java中所有異常都是派生於類Throwable的一個例項:

各種異常分類的標準:

RuntimeException相當於邏輯錯誤

關於受查異常和非受查異常:

方法後的宣告:

 

如果在子類中覆蓋了超類的一個方法, 子類方法中宣告的受查異常不能比超類方 法中宣告的異常更通用(也就是說, 子類方法中可以丟擲更特定的異常, 或者根本不拋 出任何異常)。 特別需要說明的是, 如果超類方法沒有丟擲任何受查異常, 子類也不能拋 出任何受查異常。

而在 Java 中, 沒有 throws 說明符的方法將不能丟擲任何受查異常。

捕獲異常

合併catch語句:

將原始異常設定為新異常的原因:

 

finally多用於資源管理,確保無論在任何情況下,程式碼都能得到執行

try 語句可以只有 finally 子句, 而沒有 catch 子句。 

異常如果沒有catch住,會繼續丟擲。與finally無關

 

關於解耦:

當finally語句包含return的時候的執行效果:

 

帶資源的try語句

不管是正常退出還是存在異常,都會呼叫close方法

也可以指定多個資源:

帶資源的 try 語句自身也可以有 catch 子句和一個 finally 子句。

這些子句會在 關閉資源之後執行。 不過在實際中, 一個 try語句中加入這麼多內容可能不是一個好 主 意。 

 

分析堆疊軌跡元素

全部打印出來:
 

分析這個陣列:

獲得所有執行緒的執行軌跡: