ArithmeticException 算术异常
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try { // try监控区域
System.out.println(a/b);
} catch (ArithmeticException e){
System.out.println("程序出现异常,变量B不能为0");
} finally { // 处理善后工作,无论是否有异常,最后都会执行
System.out.println("finally");
}
// finally 可以不写, 有些 IO,资源 必须要关闭的,可以用finally
}
}
可以写多个catch,但是只能捕获一个
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try { // 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");
}
// finally 可以不写, 有些 IO,资源 必须要关闭的,可以用finally
}
}
可以写多个catch,但是只能捕获一个catch。捕获的顺序必须按从小到大来写
idea 快捷键,生成 try catch
- 选中需要 try catch 的代码
- Ctrl + Alt + T
public class Test2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
// Ctrl + Alt + T
try {
System.out.println(a/b);
} catch (Exception e) {
// System.exit(1); // 程序停止运行
e.printStackTrace(); // 打印错误的栈信息
} finally {
}
System.out.println("8888");
}
}
throw、throws
public class Test {
public static void main(String[] args) {
try {
new Test().test(1,0);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("0000000");
}
// 假设这个方法中,处理不了这个异常,方法上抛出异常
public void test(int a, int b) throws ArithmeticException{
if (b==0){
throw new ArithmeticException(); // 主动抛出异常,一般在方法中使用
}
}
}
throw: 在方法体中主动抛出异常
throws :在方法上抛出异常
https://www.bilibili.com/video/BV12J41137hu?p=78&spm_id_from=pageDriver