JavaSE基础复习四:异常处理
本文最后更新于:2021年7月23日 晚上
JavaSE基础复习四:异常处理
异常:程序出现了不正常的情况
异常类的层级关系
Error:严重错误,不需要处理
Exception:称为异常类,他表示程序本身可以处理的问题
RuntimeException(运行时异常):在编译器不检查,在运行时才会出现,可以不显式处理,也可以和编译时异常一样处理
非RuntimeException(编译时异常):编译器就可以发现并处理,不处理程序不能通过编译,因此必须处理
JVM的默认处理方案:
先把异常的名称,异常的原因及异常出现的位置等信息输出在了控制台(e.printStackTrace())
程序停止执行
异常处理
try…catch…处理
格式:
1
2
3
4
5
6try{
可能出现的异常代码
}
catch(异常类名 变量名) {
异常处理代码
}
执行流程:程序从try里面的代码开始执行,出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统。当Java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理,执行完毕后,程序还可以继续运行
异常类的常用方法:
方法名 作用 public String getMessage() 异常的原因 public String toString() 异常的内容 public String getStackTrace() 异常的所有信息 throw处理
当前无法处理异常是,可以将异常抛出去
用法:在方法后
fuction throws 异常名
在调用出,依然需要用try…catch…进行处理
1
2
3
4
5
6
7
8
9
10
11public funtion() throws IOException {
}
public static void main(String[] args) {
try {
function();
} catch(IOException e) {
e.printStackTrace();
}
}
自定义异常
很多异常我们需要,但API并不提供,我们可以继承Exception类或者RuntimeException,实现自定义异常。你问为什么不继承其它的非RuntiomeException,因为编译时就必须要处理,继承了没有意义
定义格式:
1
2
3
4
5
6public class 异常类名 extends Exception {
无参构造()
有参构造(String message){
super(message); // 这个message就是输出的错误信息,Trowable带参构造需要传入
}
}使用方法:在方法中,某个条件下
thorw new 异常类名(message)
throw和throws的区别
throw | throws |
---|---|
用于方法体内,跟的是异常对象 | 用于方法声明后,跟的是异常类名 |
表示抛出异常,由方法体内catch内的语句处理 | 表示抛出异常,由方法调用者处理 |
执行throw一定抛出了某种异常 | 表示可能出现某种异常,如果出现就抛出,没有就不管 |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!