Java-SE Day6
Java 異常
Java 把異常當(dāng)作對(duì)象處理,并定義一個(gè)基類(lèi)java.lan.Throwable 作為所有異常的超類(lèi)
異常分為兩大類(lèi) : Error 和 Exception
**Error **類(lèi)對(duì)象由 JVM 生成并拋出,大多數(shù)與代碼編寫(xiě)者所執(zhí)行操作無(wú)關(guān)
Exception 有個(gè)非常重要的子分支:RuntimeException (運(yùn)行時(shí)異常) ,這些異常一般由程序邏輯錯(cuò)誤引起
捕獲和拋出異常
捕獲多個(gè)異常中,從小到大進(jìn)行捕獲
異常處理5個(gè)關(guān)鍵字 : try、catch 、finally 、 throw、throws
int a = 1;
int b = 0;
try{ //try 監(jiān)控區(qū)域
System.out.println(a/b)
}catch (異常類(lèi)型 e){ //catch 捕獲異常,執(zhí)行異常后進(jìn)行的操作
System.out.println("程序出現(xiàn)異常")
}finally{ // 處理善后工作
System.out.println("finally")
}
throw new 異常類(lèi)型(); // 主動(dòng)拋出異常,一般在方法中使用
ctrl + alt + t : 快速生成代碼框架包裹代碼塊
自定義異常
自定義異常只需繼承 Exception 類(lèi)即可,自定義異常不常用
// 通過(guò)構(gòu)造器來(lái)接受傳入信息,再通過(guò)toString 方法打印需要返回的錯(cuò)誤信息
public class MyException extends Exception{
pulic int datail;
// 定義構(gòu)造器傳入?yún)?shù)
public MyException(int a){
this.number=a;
}
//toString : 用于打印異常的信息
//toString 方法會(huì)在類(lèi)被當(dāng)作字符串時(shí)自動(dòng)調(diào)用
public String toString(){
return "MyException{"+number+"}";
}
}
// 調(diào)用自定義異常需注定throw 拋出捕獲,或者throws 拋至更高層的方法
static void test(int a) throws MyException{ // throws向函數(shù)調(diào)用層拋出異常
System.out.println("傳遞的參數(shù)為"+a);
if (a>10){
throw new MyException(a); // 主動(dòng)使用MyException 拋出異常
}
System.out.println("OK");
}
psvm{
// 由于異常由方法拋出,所以這里必須做try catch 捕獲
try{
test(1);
}catch (MyException e){ // catch 會(huì)將MyException 類(lèi)當(dāng)作字符串調(diào)用,從而觸發(fā)了toString 方法
System.out.println("MyException=>"+e)
}
}
? try catch 捕獲異常時(shí),若存在多重catch 塊,需catch(Exception) 用來(lái)兜底

浙公網(wǎng)安備 33010602011771號(hào)