1. 程式人生 > >11月11日的1500字感想

11月11日的1500字感想

1,為什麼需要異常處理?

異常是導致程式中斷執行的一種指令流。如果不對異常進行正確的處理,則可能導致程式的中斷執行,造成不必要的損失,所以
在程式的設計中必須要考慮各種異常的發生,並正確的做好相應的處理,這樣才能保證程式的正常執行。

一旦產生異常,異常之後的語句並不會被執行,而是直接結束程式,並將錯誤報告給客戶了。

2,異常的基本處理格式try—catch。try中捕獲異常,catch中處理對應的異常。

try中捕獲異常,出現異常之後的程式碼將不再被執行,而是跳轉到相應的catch語句中執行,用於處理異常。
對於異常,也可以設定其統一的出口,使用fially完成。

3,異常類的繼承關係

在整個Java的異常結構中實際上有兩個最常用的異常類,Exception,Error,這兩個類全都是Throwable的子類,
Exception,一般表示的是程式中出現的問題,可以直接使用try-catch處理。
Error,一般指的是JVM錯誤,程式中無法處理。
一般情況下,開發者習慣於將Error,Exception統一稱為異常。
一般在輸出異常資訊的時候,可以直接使用System.out.println進行列印異常物件。
首頁可以通過Exception提供的一個方法,public void printStackTrace();來列印異常資訊。

4,Java的異常處理機制:

在整個Java的異常處理中,實際上也是按照面向物件的方式進行處理的,處理步驟:
1,一旦產生異常,則首先會產生一個異常類的例項化物件。
2,在try語句中對此異常物件進行捕捉。
3,產生的異常物件與catch語句中的各個異常型別進行匹配,如果匹配成功則執行catch語句中的程式碼。

根據物件的多型性,子類的例項化物件可以直接使用父類的物件進行接收。
在異常的處理中,也是可以使用這樣的概念,因為try中產生的是一個例項化物件,如果現在有一些其他的無法知道
的異常,則可以最後使用Exception進行捕獲。
但是有一個注意點:捕獲更粗的異常要放在捕獲更細的異常之後。

又出現了一個問題:
既然所有的Exception物件都可以使用Exception接收,(都可以發生向上轉型關係)直接使用Exception捕獲異常不是更方便麼?
這樣雖然可以統一全部捕獲到異常,但是在一個精細的開發中,是不建議這樣使用的,因為,這樣只是知道發生了異常,並不知道
具體發生了什麼異常,所以,最好分別進行捕獲。

又有一個問題:
既然不過Exception是最方便的,那麼直接捕獲它的父類,Throwable豈不是更好?
首先,這樣的做法是可以的,因為Exception是Throwable的子類,但是正常的開發人員是不會這樣做的,因為程式的try語句中永遠只會丟擲Exception的子類物件,Throwable不僅僅有
Exception這個子類,還有Error這個子類。

1,程式出現異常之後,如果沒有合理的處理的話,則會導致程式的中斷執行。
2,使用try—catch,和try–catch–finally,可以處理異常。finally將會作為異常的統一出口,不管是否出現異常都會執行此語句。
3,一個異常處理中,可以同時出現多個catch,但是捕獲更粗的異常要放在捕獲更細的異常之後,否則程式編譯會報錯。
4,在異常中,最大的類Throwable,分為兩個子類,Exception,Error,其中Exception表示的是程式可以自己處理的異常,Error表示的是jvm錯誤,一般程式是無法處理的。
5,捕獲異常的時候,可以直接捕獲Exception,但是最好分開捕獲,如果所有的異常處理操作是一樣的話,則也可以直接捕獲Exception。
6,每當異常產生之後,會在程式中產生一個異常類的例項化物件,之後使用此物件與catch中的異常型別進行匹配,如果匹配成功則執行catch語句中的內容,如果匹配不成功,則
繼續向下匹配,如果都無法匹配成功,程式將出現中斷執行的情況。

5,在定義一個方法的時候,可以使用throws關鍵字宣告,使用throws宣告的方法表示此方法不處理異常,而是交給方法的呼叫處進行處理。

這樣一來,在後面呼叫這個除法的方法的時候就必須進行異常的處理。

throws使用格式: public 返回值型別 方法名稱(引數列表) throws 異常類{}

什麼意思呢?比如說,定義一個2個數相除的操作方法,對於這個除法操作,可能會出現除數為0的異常,但是也可能不出現異常,對於這樣的操作,
其實最好就是將它使用throws關鍵字宣告,一旦出現了異常,則應該交給呼叫處去處理。