一、Java异常类层次结构
Java中,所有的异常都来源于java.lang包中的Throwable类,它有两个重要的子类,Exception
(异常)和Error
(错误)。
Exception
:程序本身可以处理的异常,可以通过catch
来进行捕获。Exception
又可以分为 受检查异常(必须处理) 和 不受检查异常(可以不处理)。Error
:Error
属于程序无法处理的错误 ,我们没办法通过catch
来进行捕获 。例如,虚拟机内存不够错误(OutOfMemoryError
)、类定义错误(NoClassDefFoundError
)等 。这些异常发生时,Java 虚拟机(JVM)一般会线程终止。
二、Throwable类常用方法
public String getMessage()
: 返回异常发生时的简要描述public String toString()
: 返回异常发生时的详细信息public String getLocalizedMessage()
:返回异常对象的本地化信息。使用Throwable
的子类覆盖这个方法,可以生成本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与getMessage()
返回的结果相同public void printStackTrace()
:在控制台上打印Throwable
对象封装的异常信息
三、try-catch-finally
try
块: 用于捕获异常。其后可接零个或多个catch
块,如果没有catch
块,则必须跟一个finally
块。catch
块: 用于处理 try 捕获到的异常。finally
块: 无论是否捕获或处理异常,finally
块里的语句都会被执行。当在try
块或catch
块中遇到return
语句时,finally
语句块将在方法返回之前被执行。
在以下 2种特殊情况下,finally
块不会被执行:
- 在
try
或finally
块中用了System.exit(int)
退出程序。但是,如果