《Java编程的逻辑》笔记24--异常(中)/异常类Throwa
2019-06-17 本文已影响10人
天一方蓝
![](https://img.haomeiwen.com/i5260759/a37616000bca2577.png)
异常类体系
![](https://img.haomeiwen.com/i5260759/23880042dbb3f52c.png)
Throwable
- Error
Error表示系统错误或资源耗尽,由Java系统自己使用,应用程序不应抛出和处理, 比如图中列出的虚拟机错误(VirtualMacheError)及其子类内存溢出错误(OutOfMemoryError)和栈溢出错误(StackOverflowError)。 - Exception
Exception表示应用程序错误,它有很多子类,应用程序也可以通过继承Exception或其子类创建自定义异常, 图中列出了三个直接子类:IOException(输入输出I/O异常),SQLException(数据库SQL异常),RuntimeException(运行时异常) -
RuntimeException
RuntimeException(运行时异常)比较特殊,它的名字有点误导,因为其他异常也是运行时产生的,它表示的实际含义是unchecked exception (未受检异常),相对而言,Exception的其他子类和Exception自身则是checked exception (受检异常),Error及其子类也是unchecked exception。
checked还是unchecked,区别在于Java如何处理这两种异常,对于checked异常, Java会强制要求程序员进行处理,否则会有编译错误,而对于unchecked异常则没有这个要求
image.png
这么多不同的异常类其实并没有比Throwable这个基类多多少属性和方法, 大部分类在继承父类后只是定义了几个构造方法,这些构造方法也只是调用了父类的构造方法,并没有额外的操作
使用合适的名字都有助于代码的可读性和可维护性。
自定义异常
public class AppException extends Exception {
public AppException() {
super();
}
public AppException(String message,
Throwable cause) {
super(message, cause);
}
public AppException(String message) {
super(message);
}
public AppException(Throwable cause) {
super(cause);
}
}
一般通过继承Exception或者它的某个子类,如果父类是RuntimeException或它的某个子类,则自定义异常也是unchecked exception,如果是Exception或Exception的其他子类,则自定义异常是checked exception。
和很多其他异常类一样,我们没有定义额外的属性和代码,只是继承了Exception,定义了构造方法并调用了父类的构造方法。