异常
try/catch/finally
创建异常
快捷键:
选中代码段,Ctrl+Alt+T
进行选择
默认异常书写方法
public class App {
public static void main(String[] args) {
int a = 1;
int b = 0;
try { //try监控区域
System.out.println(a/b);
}catch (Exception e) { //捕catch获异常
System.out.println("出现异常");
}finally { //处理善后工作,用于执行关闭方法(IO流、Scanner之类的)
System.out.println("finally");
}
}
}
执行结果
出现异常
finally
按级别捕获多个异常
级别:自上而下,由小到大
public class App {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
System.out.println(a/b);
}catch (Error e) {
System.out.println("Error异常");
}catch (Exception e) {
e.printStackTrace(); //打印错误的栈信息
System.out.println("Exception异常");
}catch (Throwable e){
System.out.println("Throwable异常");
}finally {
System.out.println("最终执行");
}
}
}
执行结果
java.lang.ArithmeticException: / by zero
at Extends.App.main(App.java:9)
Exception异常
最终执行
throw/throws
throw
在方法中
,主动抛出异常
public class App {
public static void main(String[] args) {
new App().divide(1,0);
}
public void divide(int a,int b){
if (b==0){
//throw在方法中,主动抛出异常
throw new ArithmeticException();
}
}
}
执行结果
Exception in thread "main" java.lang.ArithmeticException
at Extends.App.divide(App.java:10)
at Extends.App.main(App.java:5)
throws
在方法上
,主动抛出异常
public class App {
public static void main(String[] args) {
new App().divide(1,0);
}
//throws在方法上,主动抛出异常
public void divide(int a,int b)throws ArithmeticException{
if (b==0){
throw new ArithmeticException();
}
}
}
执行结果
Exception in thread "main" java.lang.ArithmeticException
at Extends.App.divide(App.java:10)
at Extends.App.main(App.java:5)
自定义异常
不常用,就不写实例了