博爲峯Java面試題-異常處理之Throwable類

[面試原題]java

[博爲峯題目] 下面關於java.lang.Exception類的說法正確的是()程序員

A 繼承自Throwable   B Serialable    C 繼承自Error    D 都正確面試

[正確答案]數組

 A指針

[面試技術解析]code

博爲峯小博老師繼承

Java異常的級數爲Java異常的基類爲java.lang.Throwable,java.lang.Error和java.lang.Exception繼承Throwable,RuntimeException和其它的Exception等繼承Exception,具體的RuntimeException繼承RuntimeExceptionget

Java異常類的結構圖:io

[技術擴展]編譯

博爲峯小博老師

1) java.lang.Error: Throwable的子類,用於標記嚴重錯誤。合理的應用程序不該該去try/catch這種錯誤。絕大多數的錯誤都是非正常的,就根本不應出現的。java.lang.Exception: Throwable的子類,用於指示一種合理的程序想去catch的條件。即它僅僅是一種程序運行條件,而非嚴重錯誤,而且鼓勵用戶程序去catch它。

2) Error和RuntimeException 及其子類都是未檢查的異常(unchecked exceptions),而全部其餘的Exception類都是檢查了的異常(checked exceptions).checked exceptions: 一般是從一個能夠恢復的程序中拋出來的,而且最好可以從這種異常中使用程序恢復。好比FileNotFoundException, ParseException等。檢查了的異常發生在編譯階段,必需要使用try…catch(或者throws)不然編譯不經過。

unchecked exceptions: 一般是若是一切正常的話本不應發生的異常,可是的確發生了。發生在運行期,具備不肯定性,主要是因爲程序的邏輯問題所引發的。好比ArrayIndexOutOfBoundException, ClassCastException等。從語言自己的角度講,程序不應去catch這類異常,雖然可以從諸如RuntimeException這樣的異常中catch並恢復,可是並不鼓勵終端程序員這麼作,由於徹底沒要必要。由於這類錯誤自己就是bug,應該被修復,出現此類錯誤時程序就應該當即中止執行。 所以,面對Errors和unchecked exceptions應該讓程序自動終止執行,程序員不應作諸如try/catch這樣的事情,而是應該查明緣由,修改代碼邏輯。

 

RuntimeException:RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等。

相關文章
相關標籤/搜索