说到异常,大家脑海中第一反应肯定是try-catch-finally这样的固定的组合。的确,这是Java异常处理的基本范式,在Java等面向对象的编程语言中异常属于对象。我们所理解的Java异常实际上就是Java程序在运行过程中发生由于外部问题(如硬件错误、输入错误)等导致的程序异常事件。
异常时什么?就是指阻止当前方法或作用域继续执行的问题,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序进行相应的处理。Java异常的类型有很多种,下面我们就使用一张图来看一下Java异常的继承层次结构:
图片中我们看到Java异常的基类是Throwable类型,然后它有两个派生类Error和Exception类型,然后Exception类有分为受检查异常及RuntimeException(运行时异常)。下面我们就来逐一介绍。
Error一般表示编译时或者系统错误,例如:虚拟机相关的错误,系统崩溃(例如:我们开发中有时会遇到的OutOfMemoryError)等。这种错误无法恢复或不可捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此也不应该试图用catch来进行捕获。
上面我们有介绍,Java异常的中的Exception分为受检查异常和运行时异常(不受检查异常)。下面我们展开介绍。
相信大家在写IO操作的代码的时候,一定有过这样的记忆,对File或者Stream进行操作的时候一定需要使用try-catch包起来,否则编译会失败,这是因为这些异常类型是受检查的异常类型。编译器在编译时,对于受检异常必须进行try...catch或throws处理,否则无法通过编译。常见的受检查异常包括:IO操作、ClassNotFoundException、线程操作等。
RuntimeException及其子类都统称为非受检查异常,例如:NullPointExecrption、NumberFormatException(字符串转换为数字)、ArrayIndexOutOfBoundsException(数组越界)、ClassCastException(类型转换错误)、ArithmeticException(算术错误)等。
以上就是Java异常的简单归类,当然我们从Java异常的继承层次结构不难发现,Java异常其实细分的话还有很多的种类,这里我们就不过多赘述了,想了解详细情况的小伙伴可以去动力节点在线观看在线视频课程免费学习Java异常的全部知识。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54