java学习笔记--基础知识--异常

一、异常的层次结构

java学习笔记--基础知识--异常_第1张图片

Throwable是java异常的顶级类,Exception和Error是它2个重要的子类,各自包含了大量的子类。   Exception和Error的区别在于,Exception是可以被程序本身处理的,Error是无法有程序本身处理的。

Throwable中我们常用的方法有:

1. 返回异常发生时的详细信息
public string getMessage();
 
2. 返回异常发生时的简要描述
public string toString();
 
3. 返回异常对象的本地化信息。使用Throwable的子类覆盖这个方法,可以声称本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与getMessage()返回的结果相同
public string getLocalizedMessage();
 
4. 在控制台上打印Throwable对象封装的异常信息
public void printStackTrace();

Error是指程序运行所依赖的环境出现了问题,例如JVM出问题了,又或者内存用尽了,这些都是不允许出现的情况,解决这类问题已经超出了程序本身的能力,所以程序不用去捕获这类异常状态。

 

Exception是指程序本身可以处理的意外情况。 Exception有一个非常重要的子类 RuntimeException。 RuntimeException及其子类表示了 JVM常用操作 所引发的错误。 包括了NullPointerException、ArithmeticException、ArrayIndexOutOfBoundException等等。

我说Exception是可以被程序本身进行处理的,但是要不要处理呢(处理异常包括:捕获和抛出2中处理方法)? 

按照Exception是否必须进行处理,可以分为2类:

1. 可查异常(编译器要求必须处理的异常): 这种异常在程序执行时经常会出现,而且出现这种异常是我们可以预见的到的。 在调用可能抛出这种异常的方法时,编译器要求我们必须就那些处理。 这类异常是,除了RuntimeException及其子类以外的所有异常类。

2. 不可查异常(编译器并不强制要求处理): 包括 RuntimeException及其子类,Error及其子类。  在程序中,我们调用可能抛出RuntimeException的方法时,可以不处理这个异常(不抛出,不捕获)。  java这样设计是因为,当RuntimeException发生时,肯定是我们的程序逻辑出现了问题,我们需要去找到并解决它,而不是捕获了事。

 

 

你可能感兴趣的:(JAVA)