我们发现“b=null”时,得到另一个异常,“<em>java</em>.lang.NullPointerException”。这个异常就是大名鼎鼎的“空指针异常”,简称为“npe”。这两个异常有一个共同点:在程序运行到错误的地方之前,异常并不会表露出来。这
2021-05-19 15:00:14
程式在運行過程中,經常會遇到各種各樣的問題。比如,在使用四則運算的除法的時候,程式遇到這樣的情況:
int a = 5;int b = 0;System.out.println(a/b);
我們知道0不能作為除數,因為0作為除數會是無窮大,這個結果是拿不到的。所以這個程式會報「除零異常」。
我們來看第二個程式:
我們發現「b=null」時,得到另一個異常,「java.lang.NullPointerException」。這個異常就是大名鼎鼎的「空指針異常」,簡稱為「npe」。
這兩個異常有一個共同點:在程式運行到錯誤的地方之前,異常並不會表露出來。這種只有運行時才被jvm拋出的異常叫做「運行時異常」,也叫做非受檢異常(unchecked exceptions),意思是無法檢查的異常,只有運行的時候出現問題才能拋出。運行時異常有一個共同的父類,這個父類也在「java.lang」包下,全類名:「java.lang.RuntimeException」。
除了上述的兩個異常,運行時異常還有許多,比如「索引越界異常(IndexOutOfBoundsException)」、類型轉換異常(ClassCastException )等。
除了運行時異常以外,java還有一類異常是可以在運行之前就檢查出來的,我們稱這類異常為受檢異常(checked exceptions)。
那麼有哪些異常是受檢異常呢?其實除了運行時異常之外的所有異常都是受檢異常。受檢異常有一個特點,先不說是什麼,我們直接上程式碼:
明明使用了正確的構造器來創建物件,為啥還是報出紅槓了呢?
我們發現在使用了正確的構造器的情況下,程式碼卻報出紅槓了。並提示「Unhandled exception」,意為未處理的異常。也就是說,jvm在我們程式碼一寫完馬上就檢查出了這個異常。這也就是「受檢異常」這個名稱的由來。
程式已經報錯了,直接運行是不行的。我們就需要處理一下這個異常。至於怎樣處理,我會在下節詳細的介紹。
繼續談異常的種類。不管是運行時異常也好,受檢異常也罷,它們都有一個共同的祖先Exception類:
但是我們看到即使是Exception類也繼承了一個類「Throwable」。為什麼我不說異常類的祖先是Throwable類呢?
原因在於Throwable類並不只是Exception的父類,同時還是Error的父類。也就是說,異常類裡面,Exception已經是頂級父類了。而Throwable類的另一個子類Error代表的是jvm無法處理的系統級的錯誤,比如記憶體洩漏、讀取一個非java類的類檔案等。此時由於處理這類錯誤超出了java虛擬機器的能力範圍,就會報錯。也就是「jvm」表示自己無能為力的意思。
關於java異常的分類就介紹到這裡了。小夥伴們,你們get到了嗎?
相關文章
我们发现“b=null”时,得到另一个异常,“<em>java</em>.lang.NullPointerException”。这个异常就是大名鼎鼎的“空指针异常”,简称为“npe”。这两个异常有一个共同点:在程序运行到错误的地方之前,异常并不会表露出来。这
2021-05-19 15:00:14
苹果自研 M1 CPU 在性能和效率上给人留下了深刻的印象,不过霍华德·奥克利(Howard Oakley)在对 M1 <em>Mac</em> 的服务质量(QoS)调度优化进行了深入的研究之后,发现它能够给终端设备用户带来体验方面的进一步提升。目前 M1
2021-05-19 14:32:08
Atotech BIA Kunststoff- und Galvanotechnik (BIA)Bolta Werke GmbH C. Uyemura Chromoplastica CMC Coventya Cybershield Dixline Corporation Dow Chemical Enthone Galva Decoparts Grohe JCU Corporation Leade
2021-05-19 14:32:06
2018年,在dg辱华事件中,张艺兴因为在微博发表“团结就是力量”、从而在粉丝眼中立起了一个“爱国人设”,还因此上了热搜。而其后三月份张艺兴代言的<em>mac</em>弄错了中国版图,张艺兴在评论区谴责<em>mac</em>品牌方、其
2021-05-19 14:32:04
如上图所示,安装Adobe Creative Cloud登陆显示没有管理应用程序的权限。解决办法:第一步:菜单中点击 前往>前往文件夹>复制输入以下路径并打开 /Library/Application Support/Adobe/OOBE/Configs/ 第二步:将ServiceConfig
2021-05-19 14:32:00
至此,包括 iMac、<em>Mac</em> mini、<em>Mac</em>Book Air、13 英寸 <em>Mac</em>Book Pro 等多款 <em>Mac</em> 产品都已成功转换到了 M1 平台。当然,对于苹果来说,一切还远未结束,苹果还将继续对 M 系列芯片以及 <em>M
2021-05-19 14:31:56