异常
概念:程序在运行可能会出现的一些错误被称为异常。
异常产生后,如果不做任何处理,则程序会终止运行,提前结束
-
捕获处理异常
(1) 异常的捕获为了避免程序终止运行
(2) try{
//业务逻辑
}catch(Exception e){
//异常处理
}finally{
//不管是否产生异常都会运行
}。
(3) Finally语句块有以下四种情况不会运行
① 在finally语句中出现异常
② 在前面的代码中使用System.exit().退出了程序
③ 程序所在线程死亡
④ 关闭了CPU
-
抛出异常
(1) Throws
① 出现在方法名后
② 往上一级抛出不处理,如果上一级不处理可以继续抛出,但最终都要被处理
③ 如果都不处理,则会由JVM虚拟机进行处理
(2) Throw
① 出现在方法体中,抛出一个异常对象
② 程序在运行到throw语句时后面的语句将不在执行
③ 通常使用try-catch语句 处理throw 抛出的异常
-
自定义异常
(1) 自定义异常的类需要继承Exception
(2) 和其他异常的用法一致
(3) 通常使用throw来抛出
-
异常分类
(1) Exception
(2) RuntimeException
(3) Error
-
异常使用原则
(1) 不要忽略捕获到的异常
(2) 不要过度使用不必要的异常处理
(3) 不要使用过于庞大的try-catch块
(4) 子类抛出的异常不能比父类的更高级
-
常见异常
异常 描述 NullPointerException 空指针异常 (出现条件:使用对象(字段/方法)值为null时) ArrayIndexOutOfBoundsException 数组下标越界异常 (出现条件:使用超出数组下标范围的下标) NumberFormatException 数字格式化异常 (出现条件:不符合转换格式的字符串被转换成数字时) ParseException 解析异常 (出现条件:需要转换成Date的字符串内容,不符合SimpleDateFormat对象指定的格式) ClassCastException 类型转换异常 (出现条件:将一个类型转换成另一个类型,两个类型没有继承关系) ArithmeticException 数学运算异常 (出现条件: ex:1/0) NegativeArraySizeException 创建一个大小为负数的数组错误异常 IllegalArgumentException 传递非法参数异常