当前位置: 首页 > 编程笔记 >

关于java.lang.Exception类的介绍

董法
2023-05-05

  Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable,RuntimeException和其它的Exception等继承Exception.

  扩展:错误和异常的区别(Error vs Exception)

  1) java.lang.Error: Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。

  java.lang.Exception: Throwable的子类,用于指示一种合理的程序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。

  2) Error和RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).

  checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。检查了的异常发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。

  unchecked exceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。 因此,面对Errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。

  RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。

  处理RuntimeException的原则是:如果出现 RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。其他(IOException等等)checked异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

 类似资料:
  • 关于作者 Rui Marinho (github,twitter,npm)日常是一名软件开发者,下班后是一名安全工程师,在周末时是个网络管理员。掌握丰富技能的他能够规划并建设大型基础建设项目。他有处理棘手任务的专业性,例如维护要求安全保障措施严格的高可用性系统。 2008 年他完成生物医学工程硕士后创立了软件开发公司 Seegno 并开始了他的职业生涯。2014年,他加入了由 Halsey Min

  • 本文向大家介绍Java关于IO流的全面介绍,包括了Java关于IO流的全面介绍的使用技巧和注意事项,需要的朋友参考一下 JDK提供的流继承了四大类:InputStream(字节输入流)、OutputStream(字节输出流)、Reader(字符输入流)、Writer(字符输出流)。 字符流和字节流的主要区别: 1、字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节

  • 这本用户指南还并不完善, 就像 Gradle 一样还在开发当中. 在这本指南中, Gradle 的一些功能并没有被完整的展示出来. 一些内容的解释也并不是十分的清楚, 或者假设关于 Gradle 你知道得更多. 我们需要你的帮助来完善这本指南. 在 Gradle 网站上你可以找到更多关于完善这本指南的信息. 通过这本指南, 你将会看到一些代表 Gradle 任务之间依赖关系的图表. 类似于 UML

  • 本文向大家介绍关于keras.layers.Conv1D的kernel_size参数使用介绍,包括了关于keras.layers.Conv1D的kernel_size参数使用介绍的使用技巧和注意事项,需要的朋友参考一下 今天在用keras添加卷积层的时候,发现了kernel_size这个参数不知怎么理解,keras中文文档是这样描述的: kernel_size: 一个整数,或者单个整数表示的元组或

  • 本文向大家介绍MyBatis中关于resultType和resultMap的区别介绍,包括了MyBatis中关于resultType和resultMap的区别介绍的使用技巧和注意事项,需要的朋友参考一下 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而

  • 我试图使用C# DI方法来实现一些东西。以下是我的代码片段。 以及创建ServiceLocator的代码: 现在,我用创建一个测试代码 但看起来,我总是得到函数返回的。相反,我希望通过函数获取object,那么如何正确地实现呢?