异常
- 概念:程序在运行过程中出现的特殊情况。
- 异常处理的必要性:任何程序都可能存在大量的未知问题、错误;如果不对这些问题进正确处理,则可能导致程序的中断,造成不必要的损失。
异常的分类
- Throwable :可抛出的,一切错误或异常的父类,位于 java.lang 包中。
- Error:
- Exception:
- 程序在运行和配置中产生的问题,可处理。
- RuntimeException:运行时异常,可处理可不处。
- CheckedException:受查异常,必须处理。
异常的产生
• 自动抛出异常: 当程序在运行时遇到不符合规范的代码或结果时,会产生异常。
• 手动抛出异常 :语法 : throw new 异常类型 (“ 实际参数 ”);
• 产生异常 结果 :相当 于遇到 return 语句,导致程序因异常而终止.
异常的传递
• 异常的传递:按照方法的调用链反向传递 ,如始终没有处理异常,最终会由 JVM
进行默认异常处理(打印堆栈跟踪信息)。
• 受查异常: throws 声明异常,修饰在方法参数列表后端。
• 运行时异常:因可处理可不处理, 无需声明异常.
异常的处理
try{
}catch(Exception e){
}finally{
}
- 异常处理结构
try{} catch{} .. finally{}
- 注:多重catch,遵循子(小)到父(大)的顺序,父类异常在最后.
自定义异常
• 需继承自 Exception 或 Exception 的子类,常用 RuntimeException 。
• 必要提供的构造方法:
• 无参数构造方法
• String message参数的构造方法.
方法覆盖
• 带有异常声明的方法覆盖:
• 方法名、参数列表、返回值类型必须和父类相同。
• 子类的访问修饰符合父类相同或是比父类更宽。
• 子类中的方法,不能抛出比父类更多、更宽的异常