Java之异常基础

在Java中,如果某个方法不能够采用正常的途径完成它的任务,就可以通过另一个路径退出方法。在这种情况下,方法并不返回任何值,而是throw一个封装了错误信息的对象。需要注意的是,这个方法将会立刻退出,并不返回任何值。此外,调用这个方法的代码也将无法继续执行,而是,异常处理机制开始搜索能够处理这种异常状况的异常处理器。

1.1 异常分类

在Java程序中,异常对象都是派生于Throwable类的一个实例。如果Java中内置的异常类不能满足需求,用户可以创建自己的异常类。异常层次结构如下:


Error类层次结构描述了Java运行时系统内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。如果出现了这样的内部错误,除了通告给用户,并尽力使程序安全地终止之外,再也无能为力了。这种情况很少出现。

在设计Java程序时,需要关注Exception层次结构。这个层次结构又分解为两个分支:一个分支派生于RuntimeException;另一个包含其他异常。由程序错误导致的异常属于RuntimeException;而程序本身没有问题,但由于像I/O错误这类问题导致的异常属于其他异常。

RuntimeException包含以下几种:错误的类型转换;数组访问越界;访问空指针。

非RuntimeException包含:试图在文件尾部后读取数据;试图打开一个错误格式的URL;试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在。

Java将派生于Error类或RuntimeException类的所有异常称为unchecked异常,所有其他异常称为checked异常。编译器将核查是否为所有的已检查异常提供了异常处理器。

1.2 声明已检查异常

下面4中情况应该抛出异常:

1.调用一个抛出已检查异常的方法,例如FileInputStream构造器。

2.程序运行过程中发现错误,并且利用throw语句抛出一个已检查异常。

3.程序出现错误。

4.Java虚拟机和运行时库出现的内部异常。

一个方法必须声明所有可能抛出的已检查异常,而未检查异常要么不可控制(Error),要么就应该避免发生(RuntimeException)。如果方法没有声明所有可能发生的已检查异常,编译器就会给出一个错误消息。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值