1. 程式人生 > >finally 異常解決以前我覺得finally 沒什麼用處,聽完這課才明白finally得重要性

finally 異常解決以前我覺得finally 沒什麼用處,聽完這課才明白finally得重要性

finally   異常解決裡面以前我覺得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
{
關閉資料庫;
}
}


classExceptiontest1
{
public static void main(String[] args)
{
}

}