异常
异常定义:一种对错误的识别及响应的机制
异常分类
异常分为Throwable下分为Error 系统错误 和Exception 代码问题导致的异常
Error :
系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理 程序员改不了
比如:OOM(内存谥出错误)、VirtualMachineError(虚拟机错误)、StackOverflowError(栈栈
溢出错误)等,一般发生这种情况,JVM会选择终止程序。
Exception(一般程序员说的是这个) 一颗赛步森
Exception是所有异常类的父类。分为非RuntimeException和RuntimeException
非RuntimeException 在编译的时候报错
指程序编译时需要捕获或处理的异常,如IOException、自定义异常等。属于checked
异常。
RuntimeException 运行时报错 。
指程序编译时不需要捕获或处理的异常,如:NullPointerException等。属于
1 nchecked异常。一般是由程序员粗心导致的。如空指针异常、数组越界、类型转换
异常等。
方法
getMessage() 给用户看。
throws 捕捉异常并抛出,但是不能处理异常。
传递性
可以抛出更大的异常
多个抛出用逗号分割不区分顺序
覆写中子类不能比父类不能抛出更宽泛的异常
2.try.....catch 处理异常
语法
try{ 高危代码}catch(异常类类名 形参){异常的处型}
注意点:
1.如果try中的高危代码报错,其下方代码不再执行,直接执行catch中的代码.
2.如果tyr中的高危代码没报错,则Catch不再运行。
Catchd的用法
catch要想执行,需要捕获对应的异常
可以多个Catch 但是注意顺按照从小到大的顺序分别将错误抛出并解决。
也可以只写写异常的父类。
进阶用法 1.catchd 可以嵌套。
jdk1.7,自动关闭I0资源流
(打开的资源流) 自动关闭不用手动调用Close()
try(FileInputstream fileInputstream=new FileInputstream(name:"D:/XXXXX")){
进阶2. finally,和try...catchi连用,必定会执行的代码
只有一种情况不执行System.exit();
自定义异常
步骤
1.先创建一个类,这个类需要继承已知的异常类,一般继承Exception
2.需要定义一个公有的无参构造
3.需要定义一个公有的有参构造,调用父类的构造方法,把参数穿进去
public class Exception_06 extends Exception{
public Exception_06(){
public Exception_06(String msg)
super(msg);
}
throw 异常源点