异常:
异常就是代表程序出现的问题
Java.lang.Throwable:
1.Error:代表系统级别的错误,属于严重问题,开发人员无需管理
2.Exception:叫做异常,代表程序可能出现的问题,通常会用Exception以及它的子类来封装程序出现的问题
RuntimeException及其子类:编译阶段不会出现异常提醒,编译阶段无需处理运行时出现的异常
编译时异常:编译阶段就会出现的异常,需要在编译阶段进行处理
异常的作用:
作用1:异常是用来查询bug的关键参考信息
作用2:异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况
在对应位置throw new RuntimeException()
异常的处理:
1.JVM默认的处理方式:把异常的名称,异常的原因以及异常出现的位置等信息输出在控制台,程序停止执行。
2.捕获异常:
try {
可能出现异常的代码;
} catch(异常类名 变量名){
异常的处理代码;
};
可以让程序继续往下执行而不会停止。如果出现了异常,会拿着这个异常和catch小括号中的异常对象进行对比,看括号中的变量是否可以接收这个对象,如果能被接收,就表示该异常被捕获,执行catch里面对应的代码,当catch里面的代码全部被执行后,继续执行try...catch体系下面的其他代码
1.如果try中没有遇到问题:会把try中里面的代码全部执行完毕,而不执行catch里面的代码,只有当出现了异常时才会执行catch中的代码
2.如果try中可能会出现多个问题:会写多个catch与之对应,如果要捕获多个异常,而且这些异常存在父子关系,那么父类异常一定要写在下面
3.如果try中遇到的问题没有被捕获:交给虚拟机进行处理,采取虚拟机默认的处理方法
4.如果try中遇到了问题,那么try下面的代码还会执行吗?:下面的代码不会执行,会跳转到对应的catch中,执行catch里面的语句体。
Throwable成员方法:
public String getMessage():返回此throwable的详细消息字符串
public String toString():返回此可抛出的简短描述
public void printStackTrace():把异常的错误信息输出在控制台,仅仅打印信息,而不会停止虚拟机的运行
抛出处理:
throws:写在方法定义处,表示声明一个异常,告诉调用者使用本方法可能会有哪些异常
public void 方法名() throws 异常类名1,异常类名2,...{}
throw: 写在方法内,结束方法,手动抛出异常对象,交给调用者,方法中下面的代码不再执行了
throw new Exception对象
自定义异常:让控制台的报错信息更加见名知意
1.定义异常类
2.写继承关系:
运行时异常继承RuntimeException,表示由于参数错误导致的问题
编译时异常继承Exception
3.空参构造
4.带参构造