- Java类
- Java包
- Java方法
- Java访问
- Java创建
- Java对象(Object)
- Java内部类
- Java继承
- Java抽象类
- Java泛型类
- Java异常
- Java接口
- Java枚举
- Java注解
Java异常类
异常类层次结构
异常类层次结构从java.lang.Throwable
类开始。当抛出异常时,它必须是Throwable
类的对象或其任何子类。
catch
块的参数必须是Throwable
类型或其子类,例如:Exception
,ArithmeticException
,IOException
等。
可以通过继承一个异常类类来创建自己定义的异常类。
组织排列多个catch块
Java运行时选择适当的catch
块,并从第一个catch
块开始顺序寻找合适的catch
块。try
块的多个catch
块必须从最具体的异常类型排列为最通用的异常类型。
以下代码使用多个catch
块的有效序列。
ArithmeticException
类是RuntimeException
类的子类。
如果这两个异常都在同一个try
块的catch
块中处理,那么最具体的类型,即 ArithmeticException
,必须出现在最通用的类型之前,即放在RuntimeException
异常类之前。
try { // Do something, which might throw Exception } catch(ArithmeticException e1) { // Handle ArithmeticException first } catch(RuntimeException e2) { // Handle RuntimeException after ArithmeticException }
已检查和未检查异常
有三种类型的异常:
有一些异常,有更高的发生可能。可以在
try-catch
块中处理它们。或者在调用方法/构造函数声明中指定抛出异常。错误是可能发生的异常,并且几乎不能处理它。 例如,
java.lang.OutOfMemeoryError
。 在程序中也不能做任何事情从内存不足错误中恢复。异常类是层次结构中的类,它们是Error
类的子类和Error
类,属于此类别的异常。
编译器不对这类代码采取处理。如果在运行时抛出此类异常,运行时将通过显示详细的错误消息并暂停应用程序来处理它。在运行时可能会发生异常,可从异常条件中恢复。
异常类是层次结构中的类,它们是RuntimeException
类的子类和RuntimeException
类本身,属于此类别。
第一种异常分类称为检查异常,因为编译器检查它们是否在代码中有处理了。Throwable
类,Exception
类和Exception
类的子类(不包括RuntimeException
类及其子类)称为检查异常。
所有未检查异常的异常称为未检查异常,因为编译器不检查它们是否在代码中有处理。Error
类,Error
类的所有子类,RuntimeException
类及其所有子类都是未检查的异常。
当然也可以处理未检查的异常,但是这不是编译器强迫要求的。用于处理已检查或未检查异常的程序结构是相同的。
以下代码显示如何处理已检查的异常
import java.io.IOException; public class Main { public static void main(String[] argv) { try { int input = System.in.read(); if (input != -1) { System.out.println(input); } } catch (IOException e) { System.out.print("IOException occurred."); } } }
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王