目录

一、Throwable 类

二、Error (错误)

三、Exception(异常)

四、异常处理方法1——抛出异常(throw,throws的区别)

五、异常处理方法2——捕获异常(try...catch...finally...)


 

 

一、Throwable 类

  1. Throwable 是所有的异常的祖先;
  2. Throwable的两个重要子类:Exception(异常) 和 Error(错误);
  3. Throwable类的常用方法:
    ①getMessage() :返回异常发生时的详细处理。
    ②toString() :返回异常发生时的简要描述。
    ③getLocalizedMessage() :返回异常对象的本地化信息;使用Throwable的子类覆盖这个方法,可
                                                以声称本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与
                                                getMessage() 返回的结果相同。
    ④printStackTrace() :在控制台上打印Throwable对象封装的异常信息。

 

二、Error (错误)

Error是代码运行时系统的内部错误和资源耗尽错误,是程序无法处理的错误;

如 Java虚拟机运行错误(VirtualMachineError)、类定义错误(NoClassDefFoundError) 等,这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了这样的错误,本质上也不应该试图去处理它们所引起的异常状况。

 

三、Exception(异常)

Exception是程序本身可以处理的异常。

Exception的一个重要子类:RuntimeException (运行时异常)。

RuntimeException异常由Java虚拟机抛出,如:空指针异常,数组越界异常,算术异常(如除数为0) 等。

 

PS :异常与错误的区别在于,异常能被程序本身处理,而程序是无法处理错误的。

 

四、异常处理方法1——抛出异常(throw,throws的区别)

抛出异常:一个方法不处理这个异常,而且继续将问题抛给调用者来处理,使用 throw 和 throws 。

throw 和 throws 的区别:

  1. 使用位置不同:
    throw 用在方法内,后面跟的是异常对象;
    throws 用在方法上,后面跟的是异常类(多个类型可用逗号隔开)。
  2. 功能不同:
    throws是用来声明可能发生的异常,并可给出预先的处理方法;
    throw是抛出具体的异常,执行了throw之后会跳转到方法调用者,并将异常抛给调用者。
    (所以 如果throw语句独立存在时,后面就不要再定义其他语句了,因为执行不到后面。)
  3. throws 只是表示可能会出现某种异常,但不一定会出现这些异常;
    throw 是直接抛出了异常,所以如果执行了throw语句,那么一定会抛出异常;
  4. throws 和 throw 都是消极处理异常的方式,其实它们并没有去处理异常,而是将异常向上抛出,交由上层调用处理;

 

 

五、异常处理方法2——捕获异常(try...catch...finally...)

 

  1. tyr 块:用于捕获异常;其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。
  2. catch 块:用于处理try捕获到的异常。
  3. finally 块:无论前面是否捕获了或处理了异常,finally块里的语句最后都会被执行;
                      当在try块或catch块中遇到return语句时,finally块里的语句会在方法返回之前被执行。
  4. finally块不会被执行的4种特殊情况:
    ①在finally语句块中发生了异常;
    ②在前面的代码中使用了System.exit()退出程序;
    ③程序所在的线程死亡了;
    ④关闭了CPU。