欢迎光临
我们一起进阶

Java异常处理(一):异常体系

扫码或搜索:沉默王二
发送 290992
即可立即永久解锁本站全部文章

异常是指由于各种不期而至的情况,导致程序中断运行的一种指令流,如:文件找不到,非法参数,网络超时等。为了保证正序正常运行,在设计程序时必须考虑到各种异常情况,并正确的对异常进行处理。异常也是一种对象,Java 当中定义了许多异常类,并且定义了 java.lang.Throwable 作为所有异常类的基类。

Java 语言设计者将异常划分为两类:Error 和 Exception,其体系结构大致如下图所示:

Throwable 有两个重要的子类:Exception 和 Error。Error 是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时 JVM 出现问题。通常有 Virtual MachineError,NoClassDefFoundError,OutOfMemoryError 等,这些错误是不可查的,通常是非代码性错误。Exception 则是程序本身可以捕获并且可以处理的异常。我们重点来看下 Throwable 类中常用的方法:

方法 解释
e.getCause() 返回抛出异常的原因
e.getMessage() 返回异常信息
e.printStackTrace() 发生异常时,跟踪堆栈信息并输出

运行时异常与编译异常 Exception 这种异常又分为两类: 运行时异常和编译异常。

运行时异常: 程序运行期间抛出的异常。RuntimeException 类及其子类表示 JVM 在运行期间可能出现的错误。比如 NullPointerException 等。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理。

编译异常: 在编译阶段抛出的异常。Exception 中除 RuntimeException 及其子类之外的异常。如果程序中出现此类异常,如说 IOException,必须对该异常进行处理,否则编译不通过。在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。

可查异常与不可查异常,即 checked execption 和 unchecked exception。

checked exception: 编译器要求必须处理的异常,除 RuntimeException 及其子类外。其他的 Exception 异常都属于可查异常。编译器会检查此类异常,也就是说当编译器检查到应用中的某处可能会此类异常时,将会提示你处理本异常:要么使用 try-catch 捕获,要么使用 throws 语句抛出,否则编译不通过。

unchecked exception: 编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类异常时,即使我们没有 try-catch 捕获它,也没有使用 throws 抛出该异常,编译也会正常通过。该类异常包括 RuntimeException 及其子类和 Error。

赞(0) 打赏
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

小白学堂,学的不止是技术,更是前程

关于我们免责声明

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏