Java中采用了強制異常捕捉機制,這樣一方面提高了程序的可靠性,不過有時候也帶來一些麻煩。比如: int i= Integer.parseInt("33");這個我知道它不可能會拋出異常,但是不捕捉異常的話就過不了編譯這關,當然這個代碼沒有意義的。 Java中所有異?;蛘咤e誤都繼承Throwable,我們把它分為三類吧:1.Error:所有都繼承自Error,表示致命的錯誤,比如內(nèi)存不夠,字節(jié)碼不合法等。 Error我們很少遇到,但是并不是說Error就一定非常致命,舉個例子,NoSuchMethodError表示沒有這個方法,你調用的方法不存在,你一定覺得奇怪,不存在怎么編譯的過去呀?很簡單的,你先編譯好一個被調用的類A,給一個方法。然后在你的程序調用它,編譯沒問題,運行也沒問題?,F(xiàn)在再把A類中這個方法去掉,重新編譯一遍,你再運行你的程序就知道錯誤是怎么回事了。 NullPointerException:見的最多了,其實很簡單,一般都是在null對象上調用方法了。 NumberFormatException:繼承IllegalArgumentException,字符串轉換為數(shù)字時。 ArrayIndexOutOfBoundsException:數(shù)組越界 StringIndexOutOfBoundsException:字符串越界 ClassCastException:類型轉換錯誤 UnsupportedOperationException:該操作不被支持,如果我們希望不支持這個方法,可以拋出這個異常。既然不支持還要這個干嗎?有可能子類中不想支持父類中有的方法,可以直接拋出這個異常。 ArithmeticException:算術錯誤,典型的就是0作為除數(shù)的時候。 IllegalArgumentException:非法參數(shù),在把字符串轉換成數(shù)字的時候經(jīng)常出現(xiàn)的一個異常,我們可以在自己的程序中好好利用這個異常。 這些異常一看到名字就知道是怎么回事了,其實只要理解了java的異常處理機制,這些都不是問題。
|
|