JAVA異常架構圖及常見面試題
紅色為檢查異常,就是eclipse要提示你是try catch 還是throws。
非檢查異常,就是/0,nullpointexception,數據越界訪問indexOfOutBounds 異常
錯誤: 最常見的oom錯誤,還有classnotFoundeError,StackOverflowError :
java異常處理面試題歸納
1、error和exception有什麽區別
error表示系統級的錯誤,是java運行環境內部錯誤或者硬件問題,不能指望程序來處理這樣的問題,除了退出運行外別無選擇,它是Java虛擬機拋出的。
exception 表示程序需要捕捉、需要處理的異常,是由與程序設計的不完善而出現的問題,程序必須處理的問題
2、運行時異常和一般異常有何不同
Java提供了兩類主要的異常:runtimeException和checkedException
一般異常(checkedException)主要是指IO異常、SQL異常等。對於這種異常,JVM要求我們必須對其進行cathc處理,所以,面對這種異常,不管我們是否願
意,都是要寫一大堆的catch塊去處理可能出現的異常。
運行時異常(runtimeException)我們一般不處理,當出現這類異常的時候程序會由虛擬機接管。比如,我們從來沒有去處理過NullPointerException,而且
這個異常還是最常見的異常之一。
出現運行時異常的時候,程序會將異常一直向上拋,一直拋到遇到處理代碼,如果沒有catch塊進行處理,到了最上層,如果是多線程就有Thread.run()拋出,如
果不是多線程那麽就由main.run()拋出。拋出之後,如果是線程,那麽該線程也就終止了,如果是主程序,那麽該程序也就終止了。
其實運行時異常的也是繼承自Exception,也可以用catch塊對其處理,只是我們一般不處理罷了,也就是說,如果不對運行時異常進行catch處理,那麽結果不
是線程退出就是主程序終止。
如果不想終止,那麽我們就必須捕獲所有可能出現的運行時異常。如果程序中出現了異常數據,但是它不影響下面的程序執行,那麽我們就該在catch塊裏面將異
常數據舍棄,然後記錄日誌。如果,它影響到了下面的程序運行,那麽還是程序退出比較好些。
3、Java中異常處理機制的原理
Java通過面向對象的方式對異常進行處理,Java把異常按照不同的類型進行分類,並提供了良好的接口。在Java中,每個異常都是一個對象,它都是Throwable
或其子類的實例。當一個方法出現異常後就會拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常並對異常進行處理。Java的
異常處理是通過5個關鍵詞來實現的:try catch throw throws finally。
一般情況下是用try來執行一段程序,如果出現異常,系統會拋出(throws),我們可以通過它的類型來捕捉它,或最後由缺省處理器來處理它(finally)。
try:用來指定一塊預防所有異常的程序
catch:緊跟在try後面,用來捕獲異常
throw:用來明確的拋出一個異常
throws:用來標明一個成員函數可能拋出的各種異常
finally:確保一段代碼無論發生什麽異常都會被執行的一段代碼。
4、你平時在項目中是怎樣對異常進行處理的。
(1)盡量避免出現runtimeException 。例如對於可能出現空指針的代碼,帶使用對象之前一定要判斷一下該對象是否為空,必要的時候對runtimeException
也進行try catch處理。
(2)進行try catch處理的時候要在catch代碼塊中對異常信息進行記錄,通過調用異常類的相關方法獲取到異常的相關信息,返回到web端,不僅要給用戶良好
的用戶體驗,也要能幫助程序員良好的定位異常出現的位置及原因。例如,以前做的一個項目,程序遇到異常頁面會顯示一個圖片告訴用戶哪些操作導致程序出現
了什麽異常,同時圖片上有一個按鈕用來點擊展示異常的詳細信息給程序員看的。
5、final、finally、finalize的區別
(1)、final用於聲明變量、方法和類的,分別表示變量值不可變,方法不可覆蓋,類不可以繼承
(2)、finally是異常處理中的一個關鍵字,表示finally{}裏面的代碼一定要執行
(3)、finalize是Object類的一個方法,在垃圾回收的時候會調用被回收對象的此方法。
6、try()裏面有一個return語句,那麽後面的finally{}裏面的code會不會被執行,什麽時候執行,是在return前還是return後?
自己寫了個代碼測試了一下:
顯示輸出結果為1,記住就行了,不想去鉆這個問題的牛角尖,也沒有什麽大用處。
原文地址:http://www.cnblogs.com/gaoweixiao99/p/4905860.html
JAVA異常架構圖及常見面試題