1. 程式人生 > >finally 異常解決的解決以及理解

finally 異常解決的解決以及理解

如果資料庫訪問異常,沒有finally執行關閉動作得話,這個訪問資料庫的資源一直沒有關閉,
將一直佔用這個資源,有可能妨礙其他使用者得訪問。資料庫壓力會非常大。

資料庫異常不能丟擲,
catch是用於處理異常得。如果沒有catch就代表異常沒有被處理過,如果該異常是檢測時異常。那麼必須宣告。
finally程式碼塊:
1, 定義一定執行得程式碼。通常用於關閉資源
2,finally只有一種情況不會執行。當執行到System.exit(0);finally不會執行

自定義異常
定義類繼承Exceptionh或者RuntimeException
1,為了讓該自定義類具備可拋性。
2,讓該類具備可操作異常得共性方法

class MyException(String message){
     MyException(String message){
         super(message);
     }
}

自定義異常:按照java的面向物件思想,將程式中出現特有問題進行分裝

異常的好處

  1. 將問題進行封裝。將正常流程程式碼和問題出來程式碼相分離,方便閱讀。
  2. 將正常流程程式碼和問題出來程式碼相分離,方便閱讀。

異常得處理原則:

1.處理方式有兩種:try或者throws。
2,呼叫到丟擲異常得功能時,丟擲幾個,就處理幾個。
一個try對應多個catch。
3,多個catch,父類得catch放到最下面。
4,catch內,需要定義針對性的處理方式。不要簡單定義printStackTrace,輸出語句。也不要不寫。
當捕獲到的異常,本功能處理不了時,可以繼續在catch 中丟擲。

try{
   throw new AException();
}catch(AException e){
   throw e;
}

異常得注意事項:

在子類覆蓋時:
1,子類丟擲的異常必須是父類的異常得子類夥子子集。
2,如果父類或者介面沒有異常丟擲時,子類覆蓋出現異常,只有try不能拋。

class NoException  extends Exception{
    NoException(String msg){
        super(msg);
    }
}
public vodi method()throws NoException{
}

連結資料庫;

資料操作;//throw new SQLException(); 如果資料庫操作丟擲異常程式結束 就沒有執行關閉資料庫

關閉資料庫;//該動作,無論資料庫操作是否成功,一定要關閉資源

try{
連結資料庫;

資料操作;//throw new SQLException(); 
}catch(SQLException e){
會對資料庫進行異常處理;
  throw new NoException();
}finally{
關閉資料庫;
}
}