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 + Ttry {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