第9章 异常处理.pptx
异常概述
生活中常见的异常
程序中的异常
异常的抛出与捕捉
捕捉异常try{被捕获的代码}catch(异常类型e){对异常的处理}语法1.自动捕捉异常2.trycatch语句捕捉异常
多重try—catch代码块try{语句1;语句2;}catch(someException1e){………………}catch(someException2e){………………}catch(someException3e){………………}
异常的中断机制?会不会中断循环?try{System.out.println(第1行);intnum=1/0;System.out.println(第2行);System.out.println(第3行);}catch(Exceptione){e.printStackTrace();}出现异常!
恢复机制
finally代码块try{被捕获的代码}catch(异常类型e){对异常的处理}finally{最后一定会执行的代码}语法try{语句1;语句2;}catch(someException1e){………………}catch(someException2e){………………}finally{………………}
finally代码块finally块一般都会得到执行,它相当于一个万能的保险,但有四种特殊情况finally将不会执行。1.finally块中发生异常。3.程序所在线程死亡。2.在前面的代码中用了System.exit()。4.关闭CPU。
Java常见的异常类
ClassCastException类型转换异常ClassNotFoundException未找到相应类异常ArithmeticException算术异常ArrayIndexOutOfBoundsException数组下标越界异常SQLException操作数据库异常类IOException输入输出异常FileNotFoundException文件未找到异常IllegalAccessException不允许访问某类异常NullPointerException空指针异常常见异常
自定义异常
创建自定义异常自己创建一个API中没有的异常class自定义异常类extends已有的异常类{}语法
使用throws关键字
抛出异常
将异常交给别人来处理又没油了
使用throws关键字抛出异常publicvoidmethod()throws异常类型1,异常类型2...异常类型n{}语法throws将代码中可能产生的异常交给别人来处理。try{method();}catch(异常类型e){e.printStackTrace();}被调用时
抛出异常要慎重Exception:我还会回来的!!!从现在开始养成良好的习惯,能自己处理的异常千万别抛出,自己处理不了的问题一定要抛出去。
使用throw关键字
抛出异常
使用throw关键字抛出异常thrownew异常类型();语法手动制造一个异常if(count0){thrownewArithmeticException(人员数量是负数:+count);}示例
运行时异常
运行时异常ThrowableExceptionRuntimeExceptionother...Error运行时异常其他异常
种类说明NullPointerException空指针异常ArrayIndexOutOfBoundsException数组下标越界异常ArithmeticException算术异常ArrayStoreException数组中包含不兼容的值抛出的异常IllegalArgumentException非法参数异常SecurityException安全性异常NegativeArraySizeException数组长度为负异常常见的运行时异常
try-with-resources语句
try-with-resources语句的作用一个类一个资源对象AutoCloseable接口在try-with-resources
语句中被声明JVM会自动执行
AutoCloseable
接口中的close()方法关闭资源对象一个多个
异常的使用原则
异常的使用原则不要忽略捕捉到的异常
不要过度使用异常异常的使用原则轮子太多跑不快啊
异常的使用原则不要使用过于庞大的try-catch块(Google数据中心)
异常的使用原则子类抛出的异常不能比父类更高级父类异常子类异常特例:RuntimeException异常及其子类不受此原则约束。