异常机制
异常
Exception
检查性异常,运行时异常,错误(Error)
捕获和抛出异常
五个关键字:try,catch,finally,throw,throws
public class Demo1 { public static void main(String[] args) { int a = 1; int b = 0; try{//try监控区域 System.out.println(a / b); }catch(ArithmeticException e){//catch(想要捕获的异常类型)捕获异常 System.out.println("程序出现异常,变量b不能为0"); //catch可以有多个,层层递进,越来越大 }finally {//处理善后工作 System.out.println("finally"); }//finally可以不要 } }
快捷键:选中代码,ctrl alt + t
public class Demo1 { public static void main(String[] args) { new Demo1().test(1, 0); } //假设在这个方法中,处理不了这个异常,方法上抛出异常 public void test(int a, int b)throws ArithmeticException{ if(b == 0){ throw new ArithmeticException(); //主动抛出异常,一般在方法里使用 } System.out.println(a / b); } }
自定义异常及总结
public class MyException extends Exception{ //传递数字>10异常 private int detail; public MyException(int a){ this.detail = a; } //toString:异常信息的打印 @Override public String toString() { return "MyException{" + detail + '}'; } } public class Test { static void test(int a) throws MyException{ System.out.println("传递的参数为:" + a); if(a > 10){ throw new MyException(a);//抛出 } System.out.println("OK"); } public static void main(String[] args) { try { test(1); } catch (MyException e) { System.out.println("MyException=>" + e); } } }
-
处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
-
在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
-
对于不确定的代码,也可以加上try-catch处理潜在异常
-
尽量去处理异常,切记只是简单调用printStackTrace()去打印输出
-
具体如何处理异常,要根据不同业务需求和异常类型去决定
-
尽量添加finally语句块去释放占用的资源