异常的捕获和抛出
try、 catch、 finally、 throw、 throws
一、捕获异常
-
try {}:监控区域,需要监控异常的代码放在 try{} 里面
-
catch {}:捕获异常
-
finally {}:最后执行,也可以不要 finally {} 块,处理善后工作(假设开了IO,为节约资源,关闭IO)。
-
假设捕获(catch{})多个异常,需要从小到(从子类异常到父类异常)一个一个捕获
-
自动捕获异常快捷键 : 选中要监控异常的语句 Ctrl + Alt + T :try/catch/finally ...
-
示例:
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
//假设要捕获多个异常,从小到大(子类到父类),catch catch catch
try { //try 监控区域
System.out.println(a/b);
}catch(Error c) { //catch 捕获异常
System.out.println("Error");
}catch(Exception d) {
System.out.println("Exception");
d.printStackTrace();
}catch(Throwable e) {
System.out.println("Throwable");
}finally { //finally 最后执行,处理善后工作
System.out.println("finally");
}
}
}
二、抛出异常
-
throw:主动抛出异常,throw 一般在方法中使用
-
throws:方法上抛出异常,假设这个方法中,处理不了这个异常,可以上升到方法上抛出,再由调用方法时的 try catch捕获处理异常。
public class Test2 {
public static void main(String[] args) {
try {
new Test2().test(1,0);
} catch (Exception e) {
System.out.println("ssss");
} finally {
System.out.println("finally");
}
}
//假设这个方法中,处理不了这个异常。方法上抛出异常:throws ArithmeticException
public void test(int a,int b) throws ArithmeticException{
if (b==0) {
throw new ArithmeticException(); //主动抛出异常,throw 一般在方法中使用
}else{
System.out.println(a/b);
}
}
}