异常

一.异常的作用

  • 假设在一个Java程序运行期间出现了一个错误。这个错误可能是文件包含了错误信息,或者网络连接出现问题造成的,也可能是因为使用无效的数组下标,或者试图使用一个没有被赋值的对象引用造成的。
  • 异常处理的任务就是将控制权从错误产生的地方转移给能够处理这种情况的错误处理器。
  • 在Java中,如果某个方法不能够采用正常的途径完整它的任务,就可以通过另外一个路径退出方法。在这种情况下,方法并不返回任何值,而是抛出一个封装了错误信息的对象。需要注意的是,这个方法将会立刻退出,并不返回任何值。此外,调用这个方法的代码将无法继续执行,取而代之的是,异常处理机制开始搜索能够处理这种异常状况的异常处理器。

二.异常分类

  • 在Java程序设计语言中,异常对象都是派生于Throwable类的一个实例。
    Java中的异常层次结构
  • 从图中可以看出,所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:ErrorException
  • Error类层次结构描述了Java运行时系统的内部错误和资源消耗尽错误。应用程序不应该抛出这种类型的对象。
  • 在设计Java程序时,需要关注Exception层次结构。这个层次结构又分解为两个分支:一个分支派生于RuntimeException;另一个分支包含其他异常(不仅仅是IOException)。划分为两个分支的规则是:由程序错误导致的异常属于RuntimeException;而程序本身没问题,但由于像I/O错误这类问题导致的异常属于其它异常。
  • 派生于RuntimeException的异常包含下面几种情况
错误的类型转换
数组访问越界
访问null指针
  • 不是派生于RuntimeException的异常包含
试图在文件尾部后面读取数据
试图打开一个不存在的文件
试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在。
  • Java语言规范将派生于Error类或RuntimeException类的所有异常称为非受查异常,所有其它异常称为受查异常。编译器检查是否为受查异常提供了异常处理器。

三.声明受检查异常

  • 一个方法必须声明所有可能抛出的受查异常,而非受查异常要么不可控制,要么就应该避免发生。
  • 方法应该在首部声明所有可能抛出的异常。
  • 如果在子类中覆盖了超类的一个方法。子类方法中声明的受查异常不能比超类方法中声明的异常更通用。子类方法可以抛出更特定的异常,或者根本不抛出任何异常。
  • EOFException异常描述的是:在输入过程中,遇到了一个未预期的EOF后的信号。
throw new EOFException();
或
String readData(Scanner in) throws EOFException{}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值