在 java 程序编译或运行时产生的意外的情况
- 编译时异常
必须处理
Exception 下除了 RunntimeException 之外的其他类
- 运行时异常
可以处理,也可以不处理
RunntimeException 及 其子类
-
空指针异常
-
算术异常
-
数组下标越界异常
-
类型转换异常
-
解析异常
- 捕捉并处理
try {
可能出现异常的代码块
} catch(异常类名) {
处理的代码
} catch(异常类名) {
处理的代码
}.....
finally {
永远都会执行的语句块
}
注意:多个 catch 语句时,异常的顺序是从小到大
- 抛出异常
在方法之后使用 throws 来抛出异常
区别:
-
捕捉并处理异常只处理一次,以后再调用不在处理
-
抛出异常,在以后的使用中需要再次处理
-
继承 Exception
-
定义一个普通的类,来继承 Exception
-
在该类中定义一个无参的构造器和一个有参的构造器;
无参的构造器调用有参的,有参的构造器调用父类有参的构造器
-
在使用时,先在方法中抛出该异常,然后再使用throw new 自定义异常类()
-
继承 RuntimeException
-
定义一个普通的类,来继承 RuntimeException
-
在该类中定义一个无参的构造器和一个有参的构造器;
无参的构造器调用有参的,有参的构造器调用父类有参的构造器
- 在使用时,直接使用 throw new 自定义异常类()