内容正文:
第6章 异常
异常的概念
异常的类型
异常的处理
自定义异常
断言
异常的使用原则
异常的概念
异常的类型
异常的处理
☞点击查看本小节知识架构
自定义异常
断言
异常的使用原则
6.2
6.3
6.4
6.5
6.1
6.6
目录
学习目标
理解
理解
了解
熟练
理解异常的概念
1
了解自定义异常的使用
4
2
理解异常的类型
3
熟练异常的处理方式
销售额 掌握知识 理解知识 熟悉知识 了解知识 2.5 2.5 2.5 2.5
虽然Java语言的设计从根本上提供了便于写出整洁、安全代码的方法,并且程序员也尽量地减少错误的产生,然而使程序被迫停止的错误仍然不可避免。为此Java提供了异常处理机制来帮助程序员检查可能出现的错误,以保证程序的可读性和可维护性。Java将异常封装到一个类中,出现错误时,就会抛出异常。
异常是一个在程序执行期间发生的事件,它中断了正在执行程序的正常指令流。在程序中,错误可能产生于程序员没有预料到的各种情况或者是超出了程序员可控范围的环境因素,为了保证程序有效地执行,需要对发生的异常进行相应的处理。
接下来通过一个案例来认识一下什么是异常,首先在Eclipse中新建一个chapter06的java项目,并在根目录下新建test包,然后在该包中新建TestDivException测试类。
6.1 异常的概念
如例所示。
6.1 异常的概念
程序的运行结果如图所示。
图的运行结果中显示发生了算术异常ArithmeticException(根据给出的错误提示可知在算术表达式中,0作为除数出现),该异常发生后,系统将不再执行下去,这种情况就是所说的异常。
6.1 异常的概念
Java类库中定义了异常类,这些类都是Throwable类的子类。Throwable类派生了两个子类,分别是Exception和Error类。接下来详细介绍一下异常类的继承体系,如图所示。
6.2 异常的类型
这些异常类可以分为两类:Error和Exception。接下来对这些异常类进行详细讲解。
(1)Error类是Throwable的一个子类,代表错误,该体系描述了Java运行系统中的内部错误以及资源耗尽的情形,该类错误是由Java虚拟机抛出的,如果发生,除了尽力使程序安全退出外,在其他方面是无能为力的。
(2)Exception类是另外一个重要的子类,它规定的异常是程序自身可以处理的异常。异常和错误的区别在于异常是可以被处理的,而错误是不能够被处理的。
Exception下有两个分支,一个是RuntimeException运行时异常,一个是CheckedException可检查的异常。 其中,运行时异常是虚拟机正常运行期间抛出的异常,通常是指程序运行过程中出现的错误,程序虽然能够通过语法检测,但是最终被迫中止运行,此类错误往往能够准确定位到错误发生的代码段,可以通过错误调试来解决。
6.2 异常的类型
常见的运行时异常有NullPointerException(空指针异常), ClassCastException(类型转换异常),IndexOutOfBoundsException(越界异常), IllegalArgumentException(非法参数异常),ArrayStoreException(数组存储异常),AruthmeticException(算术异常),BufferOverflowException(缓冲区溢出异常)等,更多的异常可以查看官方API文档,官方给出的RuntimeException直接已知子类如图所示。
6.2 异常的类型
CheckedException(可检查的异常)一般是指外部错误,这种异常都发生在编译阶段,Java编译器会强制程序去捕获此类异常,即会出现要求把这段可能出现异常的程序进行try...catch处理,所有CheckedException都是需要在代码中处理的,它们的发生是可以预测的,可以进行合理的处理。比如IOException,或者一些自定义的异常。除了RuntimeException及其子类以外,都是可检查的异常。
6.2 异常的类型
6.3 异常的处理
返回目录
6.3.1
使用try...catch处理异常
6.3.2
使用throws关键字抛出异常
6.3.3
使用throw关键字抛出异常
知识架构
try块——捕获异常,该块中用于监控可能发生异常的代码块是否发生异常,如果异常发生了,就会将产生的异常类对象抛出,并转向catch中继续执行。
6.3.1 使用try...catch处理异常
6.3 异常的处理
代码中的异常处理其实是对可检查异常的处理,Java提供了由try、catch和finally三个部分组成的异常捕获结构。接下来分别介绍它们的使用方法,其语法