Throwable
所有错误和异常类的超类,只有Throwable及其继承类的实例才能被虚拟机或者throw语句抛出,只有Throwable及其继承类才能作为catch语句的参数;
Throwable主要有Error和Exception两个继承分支。
Error
常见错误
2. 用于表示程序不应该尝试捕获的严重错误,例如硬件问题、内存不足等。
3. Error及其继承类视作unchecked Exception,不需要显式在签名中使用throws关键字声明。
Exception
1. 所有异常类的超类;
2. 用于表示程序可以捕获的异常,主要有checked Exception和unchecked Exception两种。
Checked Exception
常见异常
2. 设计者认为调用者能够处理的异常;
3. 构造函数或方法内部要抛出异常,必须显式在签名中使用throws关键字声明;
4. 受检查的异常, 调用者必须处理异常或继续向外抛出,否则编译不能通过。
Unchecked Exception
常见异常
2. 设计者认为调用者不一定能够处理的异常;
3. 构造函数或方法内部要抛出异常,不一定显式在签名中使用throws关键字声明。即使在签名中声明,通常只是用于提示调用者可能发生的异常,调用者可以根据情况选择是否处理异常;
4. 不受检查的异常, 发生这种错误通常由于程序员编码的漏洞,例如数组越界异常可以在访问数组元素之前使用Array.length判断下标是否越界,类型转换异常可以在对象转型之前使用instanceof关键字判断是否允许进行转换。
所有错误和异常类的超类,只有Throwable及其继承类的实例才能被虚拟机或者throw语句抛出,只有Throwable及其继承类才能作为catch语句的参数;
Throwable主要有Error和Exception两个继承分支。
Error
常见错误
- AssertionError
- IOError
- InternalError
- OutOfMemoryError
- StackOverflowError
- VirtualMachineError
2. 用于表示程序不应该尝试捕获的严重错误,例如硬件问题、内存不足等。
3. Error及其继承类视作unchecked Exception,不需要显式在签名中使用throws关键字声明。
Exception
1. 所有异常类的超类;
2. 用于表示程序可以捕获的异常,主要有checked Exception和unchecked Exception两种。
Checked Exception
常见异常
- FileNotFoundException
- IOException
- InterruptedException
- NoSuchFieldException
- NoSuchMethodException
- SQLException
2. 设计者认为调用者能够处理的异常;
3. 构造函数或方法内部要抛出异常,必须显式在签名中使用throws关键字声明;
4. 受检查的异常, 调用者必须处理异常或继续向外抛出,否则编译不能通过。
Unchecked Exception
常见异常
- ArrayIndexOutOfBoundsException
- ClassCastException
- DateTimeException
- IllegalArgumentException
- IndexOutOfBoundsException
- NullPointerException
2. 设计者认为调用者不一定能够处理的异常;
3. 构造函数或方法内部要抛出异常,不一定显式在签名中使用throws关键字声明。即使在签名中声明,通常只是用于提示调用者可能发生的异常,调用者可以根据情况选择是否处理异常;
4. 不受检查的异常, 发生这种错误通常由于程序员编码的漏洞,例如数组越界异常可以在访问数组元素之前使用Array.length判断下标是否越界,类型转换异常可以在对象转型之前使用instanceof关键字判断是否允许进行转换。