异常:
异常:程序在运行过程中出现的特殊情况,如果不对这些情况正确处理,可能导致程序中断。
异常以函数为基础单位
异常的分类:
Throwable:可抛出的,一切错误或异常的父类,位于java. lang包中
Error:JVM,硬件,执行逻辑错误,不能手动处理
Exception:程序在运行和配置中产生的问题,可处理
RuntimeException:运行时异常,可处理可不处理
CheckedException:受查异常,必需处理
异常的产生:
- 自动抛出异常:程序运行遇到不符合规范的代码或结果,会产生异常
- 手动抛出异常:语法 throw new 异常类型(“实际参数”);
- 产生异常结果:相当于遇到return语句,导致程序因异常而终止
异常的传递:
- 异常的传递:按照方法调用链反向传递,若始终未处理异常,最终会由jvm默认处理,打印堆栈信息
- 受查异常:throws声明异常,修饰在方法参数列表后端,throws后一般都跟受查异常
- 运行时异常:可处理可不处理,无需声明异常
异常的处理:
异常一般单独处理,。。处理异常的文件:包名加exception 类名AgeException,重写getMessage方法即可
try{
//可能出现异常的语句
}catch(Exception e){ //catch可有多个,或没有(没有catch要有finally),但是遵循从子到父的顺序
//异常处理相关代码
//处理方案1: syso("提示错误")
//处理方案2: e.printStackTrace();// 打印错误信息
//处理方案3: syso(e.getMessage()); // 只输出错误原因
}finally{ //finally可有可无
//无论是否异常,都会处理,常用于释放资源
}
自定义异常:需继承Exception或Exception的子类,代表特定问题,异常类型名称要望文生义可在特定问题时抛 出对应异常,常用无参构造方法和String message参数的构造方法
方法重写:子类中的方法不能抛出比父类更多,更宽的异常。