Java异常
- Exception 例外,异常
- 异常处理机制:抛出异常,然后捕获异常
- try-catch-finally示例
-
int a = 1; int b = 0; try { //监控区域 System.out.println(a/b); }catch (ArithmeticException e){ //catch的参数是想要捕获的异常类型,可以写多个catch,并且范围大的要写在范围小的后面,一个异常只会被捕获一次 System.out.println("除数不能为0"); }finally { //处理善后工作,也可以不写,一般来关闭IO和资源 System.out.println("finally"); }
-
throw-throws示例
-
public static void main(String[] args) { try { new Student().test(1,0); } catch (ArithmeticException e) { //捕获test()方法中抛出的异常并处理,程序就不会停止 System.out.println("除数为0"); } finally { System.out.println("结束"); } } public void test(int a,int b) throws ArithmeticException{ //假设方法中无法处理这个异常,再次抛出异常 if (b==0){ throw new ArithmeticException(); //主动抛出的异常,在方法中使用 } }
- IDEA中,ctrl+alt+t,再做出选择即可快速创建捕获异常的try,catch,finally语句
- 在多重catch块后面,可以加一个catch(Exception)来处理可能被遗漏的异常
- 在catch捕获后,尽量去处理异常,而非简单的打印输出
- 尽量添加finally语句块去释放占用的资源,IO,Scanner
-
(1) 创建自定义异常类,继承exception类即可,最好重写toString方法(为了方便打印自己的异常信息)
(2) 在方法中通过throw抛出异常对象
(3) 如果在方法内没有用try-catch捕获并处理,那么需要在方法的声明处通过throws抛出异常给方法调用者
(4) 调用者捕获并处理异常
- 异常对象e就是该异常对象的toString()方法返回值(String类型)