一個(gè)程序在編譯時(shí)沒(méi)有錯(cuò)誤,但在運(yùn)行時(shí)可能出現(xiàn)各種錯(cuò)誤導(dǎo)致程序的退出,這些錯(cuò)誤叫做異常。
1.try{.....}catch{......}
異常處理過(guò)程:
(1)一旦異常產(chǎn)生,首先會(huì)產(chǎn)生一個(gè)異常類(lèi)的實(shí)例化對(duì)象。
(2)在try語(yǔ)句中對(duì)此異常進(jìn)行捕捉。
(3)產(chǎn)生的異常對(duì)象和catch語(yǔ)句中的各個(gè)類(lèi)型進(jìn)行匹配,如果匹配成功,則執(zhí)行catch語(yǔ)句中的代碼。
很多異常都是類(lèi)Exception的子類(lèi),所以根據(jù)多態(tài)性,可以讓所有的異常都用Exception接收。
2.throws&throw
(1)使用throws聲明方法表示此方法不處理異常,而是由調(diào)用此方法的地方來(lái)處理。
(2)throw是人為的拋出一個(gè)異常。
throw和throws的應(yīng)用例子:
package com.company;
?
class Math{
public int div(int i,int j) throws Exception { //方法的異常交給調(diào)用方處理
System.out.println("start counting");
int temp = 0;
try {
temp = i / j;
} catch (Exception e) {
throw e; //把異常交給被調(diào)用處
}finally {
System.out.println("end counting"); //一定執(zhí)行這個(gè)代碼
}
return temp;
}
}
?
public class ExceptionTest {
public static void main(String[] args) {
Math m = new Math();
try{
System.out.println("除法"+m.div(10,0));
}
catch (Exception e){
//System.out.println("異常:"+e);
e.printStackTrace();
}
}
}
3.Exception類(lèi)和RuntimeException類(lèi)
區(qū)別:
Exception在程序中必須用try...catch...進(jìn)行處理;
RuntimeException可以不使用try...catch...處理,但如果產(chǎn)生異常,將由JVM處理。
*4.斷言
assert boolean表達(dá)式
若boolean表達(dá)式是ture,則相安無(wú)事
若boolean表達(dá)式是false,則輸出錯(cuò)誤信息