【Java学习笔记五】Java异常处理
異常通常分為三類:
- 程序可控制的異常:一般是可預見的錯誤,不是致命的。例如:除數(shù)為0,數(shù)組下標越界。
- 程序不可控制的的異常:這種異常往往是致命的,但是系統(tǒng)可以預見的。例如:系統(tǒng)棧溢出。
- 人為異常
當系統(tǒng)底層出現(xiàn)異常時,實際上是將異常用一個對象包裝起來,傳給調(diào)用方,這個過程叫做拋出。
異常類一般都是Exception的子類,類名通常以Exception結尾。例如,NullPointerException是一種比較常見的異常,叫做“未分配內(nèi)存異常”,通常一個對象需要用new來分配內(nèi)存,如果沒有分配內(nèi)存的情況下就訪問它,就會拋出這種錯誤。
Throwable類是類庫java.lang包中的一個類,該類不能直接使用,它派生了兩個子類,Exception和Error。其中Error是表示恢復很困難的一種嚴重錯誤,由系統(tǒng)保留。
- ArithmeticException: 算術異常,如除數(shù)為0。
- ArrayIndexOutOfBoundsException:數(shù)組越界異常。
- ArrayStoreException:數(shù)組存儲異常。
- ClassCastException:類型轉(zhuǎn)換異常。
- IllegalArgumentException:無效參數(shù)異常。
- NegativeArraySizeException:數(shù)組尺寸為負異常。
- NullPointerException:未分配內(nèi)存異常。
- NumberFormatException:數(shù)字格式異常。
- StringIndexOutOfBoundsException:字符串越界異常
異常的就地捕獲(catch):當程序發(fā)生異常 時系統(tǒng)捕獲異常轉(zhuǎn)而處理異常代碼。
格式如下:
例如:
try{ 1:打開文件連接 2:讀文件 3:將文件中的字符串轉(zhuǎn)為數(shù)值 } catch(文件型異常 ex1){ /*處理文件型異常*/ } catch(字符串轉(zhuǎn)換型異常 ex2){ /*處理字符串轉(zhuǎn)換型異常*/ } catch(Exception ex){ /*處理其他不可預見的異常*/ } finally{ 4:關閉文件 }復雜軟件之間可能由很多模塊構成,模塊之間存在復雜的調(diào)用關系,當莫格模塊發(fā)生異常時,可以不在模塊內(nèi)處理異常,而將這個異常拋給調(diào)用方。
將需要將異常向前拋出的函數(shù)加上一個標記:throws XXXException,表示可能向前拋出某種異常。
例如:
public void woek() throws NullPointerException//如果拋出多種異常,各種異常之間用逗號隔開 {}如果拋出所有類型的異常就直接throws Exception,如果一個方法有聲明異常,則調(diào)用這個的方法也必須聲明異常。
java中的main函數(shù)拋出的異常由JVM(java虛擬機)處理。
在java程序中如果異常都向外拋,直到try{}catch處捕獲;如果到了主方法(main方法)仍沒有捕獲,異常就由java虛擬機(java運行環(huán)境)處理
想要了解更多關于異常聲明可以移步:傳送門
總結
以上是生活随笔為你收集整理的【Java学习笔记五】Java异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java学习笔记四】Java中的包
- 下一篇: 长虹智能家用投影仪S3 让”宅“更有趣