异常
error和exception
五个关键字
try,catch,finally,throw,throws;
try //监控区域
catch //(捕获异常的类型)捕获异常
finally //处理善后工作,无论有没有异常都执行
public class Demo {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
System.out.println(a/b);
} catch (Exception e) {
System.out.println("b不能为0");
} finally {
System.out.println("finally");
}
}
}
快捷键 选中要执行异常的代码,ctrl+alt+t
当有多个catch要执行时,异常的大小要从小到大
public class Demo {
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){
System.out.println("exception");
} catch (Throwable t){
System.out.println("throwable");
}
finally {
System.out.println("finally");
}
}
}
//栈溢出报错
public class Demo {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
new Demo().a();
} catch (Error e) {
System.out.println("error");
} catch(Exception e){
System.out.println("exception");
} catch (Throwable t){
System.out.println("throwable");
}
finally {
System.out.println("finally");
}
}
public void a(){b();}
public void b(){a();}
}
throw //主动抛出异常,一般在方法中使用
public class Demo {
public static void main(String[] args) {
new Demo().test(1, 0);
}
public void test(int a,int b){
if (b == 0) {
throw new ArithmeticException();//主动抛出一个异常
}
System.out.println(a/b);
}
}