Java异常
Throwable
Throwable是Java语言中所有错误或异常的超类。
Throwable包含两个子类:Error 和 Exception,它们通常用于表示发生了异常情况。
Throwable包含了其线程创建时线程执行的快照,它提供了printStackTrace()等接口,用于获取堆栈跟踪数据等信息。
Exception
Exception及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件。
RuntimeException
1-RuntimeException是那些可能在Java虚拟机正常运行期间抛出的异常的超类。
2-编译器不会检查RuntimeException异常。例如:除数为0,抛出ArithmeticException异常。RuntimeException是
ArithmeticException的超类。若没有通过throws声明抛出异常,也没有try...catch...处理该异常,也能通过编译,
这就是我们所说的“编译器不会检查RuntimeException异常”,如果代码产生了运行时异常,则需要修改代码来避免。
Error
和Exception一样Error也是Throwable的子类。它用于指示合理的应用程序不应该试图捕获的严重问题,大多数这样的错误都是异常条件,和RuntimeException一样,
编译器不会检查Error。
Java将可抛出的Throwable的结构分为三种类型:运行时异常,被检查的异常,错误
01)运行时异常
RuntimeException及其子类都被成为运行时异常
如:数组下标越界 ArrayIndexOutOfBoundsException
字符串下标越界 StringIndexOfOutBoundsException
空指针异常 NullPointerException
(非法参数)参数异常 IllegalArgumentException
类型转换异常 ClassCastException
02)被检查异常
Exception,以及子类中除了运行时异常之外的其他子类都属于被检查异常
特点:Java编译器会检查它。此类异常,要么通过throws进行声明抛出,要么通过try-catch捕获处理,否则不能通过编译。
如:流异常 IOException
HTTP异常 HttpException
文件不存在异常 FileNotFoundException
SQL异常 SQLException
XML异常 SAXException
被检查异常通常都是可以恢复的
03)错误
Error类及其子类
和运行时异常一样,编译器不会对错误进行检查
当资源不足、约束失败就产生错误。程序本身无法修复这些错误。
如: 内存溢出 OutOfMemoryError
栈溢出 StackOverflowError
未知错误 UnknownError
对于可以恢复的条件使用被检查异常,对于程序错误使用运行时异常。
网友评论