1. 程式人生 > >從你的全世界路過-make a mistake

從你的全世界路過-make a mistake

體驗 包含 try utm 讀取 溢出 什麽 分享 接管

異常

1.Java異常概念

java異常是Java提供的用語處理程序錯誤的一種機制

所謂錯誤就是指在程序運行的過程中發生的一些異常事件(如 除0溢出,數組下標越界,索要讀取的文件不存在)。

2.Java異常的分類

Exception 異常層次結構的根類

ArithmeticException 算數錯誤情形,如以零作除數

ArrayIndexOutOfBoundsException 數組下標越界

NullPointerException 空指針異常(訪問對象為null)

ClassNotFoundException 不能加載所需的類

InputMissMatchException 類型不匹配異常(輸入與輸出不符)

3.異常的捕獲和處理

使用 try -catch語句

4.註意事項

運行期出現的錯誤

觀察錯誤的名字和行號最重要

    /*
* * @param args */ public static void main(String[] args) { int i=text(); System.out.println(i); } public static int text(){ int x=1; try{ x++; return x; //已經返回的數是2了 縱然程序繼續執行變成3 }finally{ ++x; } }

技術分享

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類的一個方法,在垃圾回收的時候會調用被回收對象的此方法。

從你的全世界路過-make a mistake