一些常見的RuntimeException

來源:互聯網
上載者:User
 

Java中採用了強制異常捕捉機制,這樣一方面提高了程式的可靠性,不過有時候也帶來一些麻煩。比如: int i= Integer.parseInt("33");這個我知道它不可能會拋出異常,但是不捕捉異常的話就過不了編譯這關,當然這個代碼沒有意義的。

Java中所有異常或者錯誤都繼承Throwable,我們把它分為三類吧:
1.Error:所有都繼承自Error,表示致命的錯誤,比如記憶體不夠,位元組碼不合法等。
2.Exception:這個屬於應用程式層級的異常,這類異常必須捕捉。
3.RuntimeException:奇怪RuntimeException繼承了Exception,而不是直接繼Error,  這個表示系統異常,比較嚴重。

Error我們很少遇到,但是並不是說Error就一定非常致命,舉個例子,NoSuchMethodError表示沒有這個方法,你調用的方法不存在,你一定覺得奇怪,不存在怎麼編譯的過去呀?很簡單的,你先編譯好一個被調用的類A,給一個方法。然後在你的程式調用它,編譯沒問題,運行也沒問題。現在再把A類中這個方法去掉,重新編譯一遍,你再運行你的程式就知道錯誤是怎麼回事了。
Exception不用說,我們要自己捕捉。
RuntimeException可以說見的最多了,下面我們說明一下常見的RuntimeException:

NullPointerException:見的最多了,其實很簡單,一般都是在null對象上調用方法了。
String s=null;
boolean eq=s.equals(""); // NullPointerException
這裡你看的非常明白了,為什麼一到程式中就暈呢?
public int getNumber(String str){
  if(str.equals("A")) return 1;
   else if(str.equals("B")) return 2;
}
這個方法就有可能拋出NullPointerException,我建議你主動拋出異常,因為代碼一多,你可能又暈了。
public int getNumber(String str){
  if(str==null) throw new NullPointerException("參數不可為空");
                                   //你是否覺得明白多了
  if(str.equals("A")) return 1;
   else if(str.equals("B")) return 2;
}

NumberFormatException:繼承IllegalArgumentException,字串轉換為數字時。
比如int i= Integer.parseInt("ab3");

ArrayIndexOutOfBoundsException:數組越界
比如 int[] a=new int[3]; int b=a[3];

StringIndexOutOfBoundsException:字串越界
比如 String s="hello"; char c=s.chatAt(6);

ClassCastException:類型轉換錯誤
比如 Object obj=new Object(); String s=(String)obj;

UnsupportedOperationException:該操作不被支援,如果我們希望不支援這個方法,可以拋出這個異常。既然不支援還要這個幹嗎?有可能子類中不想支援父類中有的方法,可以直接拋出這個異常。

ArithmeticException:算術錯誤,典型的就是0作為除數的時候。

IllegalArgumentException:非法參數,在把字串轉換成數位時候經常出現的一個異常,我們可以在自己的程式中好好利用這個異常。

這些異常一看到名字就知道是怎麼回事了,其實只要理解了java的異常處理機制,這些都不是問題。

 

作者Blog:http://blog.csdn.net/treeroot/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.