美文网首页
2019-01-19 Java 异常机制

2019-01-19 Java 异常机制

作者: watermountain | 来源:发表于2019-02-02 08:36 被阅读0次

1. Exception 和 Error 的区别?

2. RuntimeException (运行时异常) 与一般异常有什么区别的?

Java 异常类图

Exception 和 Error 都继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。

Exception 和 Error 是 Java 平台对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。

Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 OutOfMemoryError 之类,都是 Error 的子类。

<p>Exception 又分为<strong>可检查</strong>(checked)异常和<strong>不检查</strong>(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。前面我介绍的不可查的 Error,是 Throwable 不是 Exception。</p>

不检查异常就是所谓的运行时异常,类似 NullPointerException、ArrayIndexOutOfBoundsException 之类,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求。

3. 你了解哪些 Error、Exception 或者 RuntimeException?我画了一个简单的类图,并列出来典型例子,可以给你作为参考,至少做到基本心里有数。其中有些子类型,最好重点理解一下,比如 NoClassDefFoundError 和 ClassNotFoundException 有什么区别,这也是个经典的入门题目。

异常处理代码比较繁琐,比如我们需要写很多千篇一律的捕获代码,或者在 finally 里面做一些资源回收工作。随着 Java 语言的发展,引入了一些更加便利的特性,比如 try-with-resources 和 multiple catch,具体可以参考下面的代码段。在编译时期,会自动生成相应的处理逻辑,比如,自动按照约定俗成 close 那些扩展了 AutoCloseable 或者 Closeable 的对象。

try (BufferedReader br = new BufferedReader(…);

    BufferedWriter writer = new BufferedWriter(…)) {// Try-with-resources

// do something

catch ( IOException | XEception e) {// Multiple catch

  // Handle it

}

4. 实践

一、尽量不要捕获类似 Exception 这样的通用异常,而是应该捕获特定异常

保证程序不会捕获到我们不希望捕获的异常。比如,你可能更希望 RuntimeException 被扩散出来,而不是被捕获

二、 不要生吞异常(异常信息被吃掉)

三、不用使用 e.printStackTrace() 输出异常信息

Ref:

https://time.geekbang.org/column/article/6849

相关文章

  • 2019-01-19 Java 异常机制

    1. Exception 和 Error 的区别? 2. RuntimeException (运行时异常) 与一般...

  • Java异常简介及其架构

    Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理...

  • Java 异常处理总结

    Java 异常机制 Java 异常分为检查异常和非检查异常,所有RuntimeException的子类都是非检查异...

  • Java中的异常处理

    一、概述 Java异常是Java提供的一种识别和响应错误的一致性机制。 Java异常机制可以使得异常处理代码和正常...

  • JAVA异常

    一、简介 Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正...

  • Exception和Error有什么区别

    简述Java异常机制的优点 Java语言在设计之初就提供了相对完善的异常处理机制,这也是Java的优势之一;因为这...

  • 第6章 Dart基础语法 -- 异常处理

    1. 异常的定义 Dart的异常处理机制参考了Java语言的异常处理机制。与Java语言不同的是,Dart中不存在...

  • Java SE 5

    Java SE 1.Java异常处理机制 Java异常结构中定义有Throwable类,Exception和Err...

  • 异常处理 ?处理(try-catch) :甩锅(throws)_

    本章概要 本章主要和大家一起学习java异常类的处理机制,深入学习java异常类。掌握异常处理机制,及背后的逻辑。...

  • Java异常面试题(总结最全面的面试题)

    Java异常架构与异常关键字 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。Jav...

网友评论

      本文标题:2019-01-19 Java 异常机制

      本文链接:https://www.haomeiwen.com/subject/dvfzdqtx.html