一、异常简介
异常就是程序中可能出现的问题
1.Java中的所有不正常类都继承于Throwable类。Throwable主要包括两个大类,一个是Error类,另一个是Exception类;
2..Exception类,也就是通常所说的“异常”。主要指编码、环境、用户操作输入出现问题,Exception主要包括两大类,运行时异常(RuntimeException)和编译时异常(其他的一些异常)
3.编译时异常:没有继承RuntimeException的异常,直接继承于Exception。编译阶段就会出现错误提示。运行时异常:RuntimeException本身和子类。编译阶段没有错误提示,运行时出现的
二、异常的两个作用:
1.查询bug的关键参考信息
2.作为方法内部特殊的返回值,通知调用者底层的调用情况
三、异常的处理方案:
1.JVM默认的处理方式 (把异常的信息打印在控制台,程序直接停止,下面的代码不会运行)
2.自己处理(捕获异常)
3.抛出异常(交给调用者)
四、捕获异常的四个问题:
1.如果try中没有遇到问题,怎么执行?
会把try中的代码执行完毕,不会执行catch里面的代码
注意:只有当出现了异常才会执行catch里面的代码
2.如果try中遇到多个问题,怎么执行?
多写几个catch与之对应
细节:如果我们要捕获多个异常,这些异常如果存在父子关系的话,那么父类一定要写到最下面
3.如果try中的问题没有被捕获,怎么执行?
下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句,但是如果没有对应的语句,就会交给虚拟机处理
4.如果try中遇到了问题,那么try下面的其他代码还会执行吗?
不会执行,try中遇到问题,直接跳转到对应的catch,如果没有对应的catch与之匹配,则交给虚拟机处理
五、异常中的常见方法:
/* 1.public String getMessage() 返回此throwable的详细消息字符串 2.public String toString() 返回此可抛出的简短描述 3.public void printstacktrace 把异常的错误信息输出在控制台 细节:printstacktrace仅仅只是打印信息,不会停止程序运行*/
六、自定义异常:
1.定义异常类 (见名知意)
2.写继承关系(编译时异常继承Exception)
3.空参构造 (alt+insert,选择constructors,只需要选中前面两个,一个空参,一个带错误信息的带参构造)
4.带参构造
在方法内部直接throw new 自定义异常("报错信息");