异常处理机制
- 抛出异常
- 捕获异常
异常处理的五个关键词:
try、catch、finally、throw、throws
实例:int a = 1;int b = 0;
System.out.println(a/b);
异常:Exception in thread “main” java.lang.ArithmeticException: / by zero
package com.exception;
public class Test {
public static void main(String[] args) {
int a=1;
int b=0;
try{//监控区域
System.out.println(a/b);
}catch(ArithmeticException e){//捕获异常
System.out.println("程序出现异常,变量b不能为0");
}finally{//处理善后工作
System.out.println("finally");
}
//finally可以不要,假设IO流、资源,关闭
}
}
输出:
程序出现异常,变量b不能为0
finally
package com.exception;
public class Test {
public static void main(String[] args) {
int a=1;
int b=0;
try{//监控区域
new Test().a();
}catch(Error e){//catch(想要捕获的异常类型!) Throwable最高级 捕获异常
System.out.println("Error");
}catch(Exception e){//可以捕获多个异常,但是从上至下,范围从小到大
}catch(Throwable e){
} finally{//处理善后工作
System.out.println("finally");
}
//finally可以不要,假设IO流、资源,关闭
}
public void a(){b();}
public void b(){a();}
}
输出:
Error
finally
//快捷键:选中语句 ctrl+alt+t
try {
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace();//打印错误的栈信息
} finally {
}
package com.exception;
public class Test {
public static void main(String[] args) {
int a=1;
int b=0;
try {
new Test().test(a,b);
} catch (ArithmeticException e) {
e.printStackTrace();
} finally {
}
}
//假设在这个方法中处理不了这个异常。方法上抛出异常
public void test(int a, int b) throws ArithmeticException{
if(b==0){ //throw throws
throw new ArithmeticException();//主动抛出异常,一般在方法中使用
}
}
}