1. 程式人生 > >java的常見執行時異常及其原因

java的常見執行時異常及其原因

轉自:https://blog.csdn.net/jarvan_song/article/details/52584608

NO.1 java.lang.NullPointerException

  這個異常大家肯定都經常遇到,異常的解釋是 “程式遇上了空指標 “,簡單地說就是呼叫了未經初始化的物件或者是不存在的物件,這個錯誤經常出現在

建立圖片,呼叫陣列這些操作中,比如圖片未經初始化,或者圖片建立時的路徑錯誤等等。對陣列操作中出現空指標,很多情況下是一些剛開始學習程式設計的朋

友常犯的錯誤,即把陣列的初始化和陣列元素的初始化混淆起來了。陣列的初始化是對陣列分配需要的空間,而初始化後的陣列,其中的元素並沒有例項化,

依然是空的,所以還需要對每個元素都進行初始化(如果要呼叫的話)。
  在jsp程式設計中經常出現:if (request.getParameter(“username”).equals(“xxx”))、out.println(session.getAttribute(“record”))等。解決這

個問題的方法是在使用前進行判空比較:

   if (request.getParameter(“username”)!=null)
  {if if (request.getParameter(“username”).

  equals(“xxx”))…}

NO.2 java.lang.ClassNotFoundException

  這個異常是很多原本在JB等開發環境中開發的程式設計師,把JB下的程式包放在WTk下編譯經常出現的問題,異常的解釋是 “指定的類不存在 “,這裡主要考

慮一下類的名稱和路徑是否正確即可,如果是在JB下做的程式包,一般都是預設加上Package的,所以轉到WTK下後要注意把Package的路徑加上。

NO.3 java.lang.ArithmeticException

  這個異常的解釋是 “數學運算異常 “,比如程式中出現了除以零這樣的運算就會出這樣的異常,對這種異常,大家就要好好檢查一下自己程式中涉及到數

學運算的地方,公式是不是有不妥了。

NO.4 java.lang.ArrayIndexOutOfBoundsException

  這個異常相信很多朋友也經常遇到過,異常的解釋是 “陣列下標越界 “,現在程式中大多都有對陣列的操作,因此在呼叫陣列的時候一定要認真檢查,看

自己呼叫的下標是不是超出了陣列的範圍,一般來說,顯示(即直接用常數當下標)呼叫不太容易出這樣的錯,但隱式(即用變量表示下標)呼叫就經常出錯

了,還有一種情況,是程式中定義的陣列的長度是通過某些特定方法決定的,不是事先宣告的,這個時候,最好先檢視一下陣列的length,以免出現這個異常

NO.5 java.lang.IllegalArgumentException
  這個異常的解釋是 “方法的引數錯誤 “,很多J2ME的類庫中的方法在一些情況下都會引發這樣的錯誤,比如音量調節方法中的音量引數如果寫成負數就會

出現這個異常,再比如g.setColor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現這個異常,因此一旦發現這個異

常,我們要做的,就是趕緊去檢查一下方法呼叫中的引數傳遞是不是出現了錯誤。 NO.6 java.lang.IllegalAccessException

  這個異常的解釋是 “沒有訪問許可權 “,當應用程式要呼叫一個類,但當前的方法即沒有對該類的訪問許可權便會出現這個異常。對程式中用了Package的情

況下要注意這個異常。

NO.7 java.lang.IncompatibleClassChangeError
不相容的類變化錯誤。當正在執行的方法所依賴的類定義發生了不相容的改變時,丟擲該異常。一般在修改了應用中的某些類的宣告定義而沒有對整個應用重

新編譯而直接執行的情況下,容易引發該錯誤。
NO.8 java.lang.InstantiationError

例項化錯誤。當一個應用試圖通過Java的new操作符構造一個抽象類或者介面時丟擲該異常.

NO.9 java.lang.LinkageError

連結錯誤。該錯誤及其所有子類指示某個類依賴於另外一些類,在該類編譯之後,被依賴的類改變了其類定義而沒有重新編譯所有的類,進而引發錯誤的情況


NO.10 java.lang.StackOverflowError
堆疊溢位錯誤。當一個應用遞迴呼叫的層次太深而導致堆疊溢位時丟擲該錯誤。

 

  其他還有很多異常,在此我就不一一列舉了,但要說明的是,一個合格的程式設計師,需要對程式中常見的問題有相當的瞭解和相應的解決辦法,否則僅僅停留在寫程式而不會改程式的話,會極大影響到自己的開發的。真正能說明你Coding水平的標準中,對異常的認識就是其中非常重要的一條。關於異常的全部說明,在api裡都可以查閱。大家也不用把其中的所有內容都背在腦中,只要做到對常見異常有一些印像,在真正遇到時知道去哪找就差不多了,畢竟Java程式設計師最最痛苦就是它的知識容量太大,而我們每天都會遇到新的錯誤與新的問題及新的知識,所以把握一條屬於自己的排隊異常的本領才是最重要的。