異常概述
異常(Exception)就是Java程序在運行過程中出現(xiàn)的錯誤,程序編譯通過并不代表著在運行時不會出錯,例如下面代碼:
public class ExceptionTest01 {
? ? publicstaticvoidmain(String[] args){
? ? ? ? int a = 1024;
? ? ? ? int b = 0;
? ? ? ? int c = a/b;? ?
? ? ? ? //下面的這個代碼不會執(zhí)行? ? ? ? System.out.println("monkey1024");? ?
? ? }
}
上面程序雖然編譯能夠通過,但是在運行時將會報出ArithmeticException: / by zero。
0是不能當(dāng)做除數(shù)的。通過這個異常提示信息可以快速的知道程序的問題,有助于開發(fā)者編寫出更加健壯的程序,這是異常最主要的作用。
將上面程序修改一下
public class ExceptionTest01 {
? ? publicstaticvoidmain(String[] args){
? ? ? ? int a = 1024;
? ? ? ? int b = 0;
? ? ? ? if(b == 0){
? ? ? ? ? ? System.out.println("除數(shù)不能是0");
? ? ? ? }else{
? ? ? ? ? ? int c = a/b;
? ? ? ? }
? ? }
}
異常的分類
異常主要分為:Error、一般性異常、RuntimeException
Error:如果程序出現(xiàn)了Error,那么將無法恢復(fù),只能重新啟動程序,最典型的Error的異常是:OutOfMemoryError
一般性異常(編譯時異常):出現(xiàn)了這種異常必須在程序里面顯示的處理,否則程序無法編譯通過
RuntimeException(運行時異常):此種異??梢圆挥蔑@示的處理,例如被0除異常,java沒有要求我們一定要處理。

所有異常的祖先類是Throwable,這個類在java.lang包下面。
JVM是如何處理異常的
main方法自己將該問題處理,然后繼續(xù)運行
自己沒有針對的處理方式,只有交給調(diào)用main的jvm來處理,jvm有一個默認(rèn)的異常處理機(jī)制。例如上面出現(xiàn)的ArithmeticException,jvm在控制臺里面打印出來了異常信息。