java异常 之 异常的层次结构

一:起因

(1)最近在用java处理分析各种数据,碰到了一些异常,如parse()异常 ParseException,valueOf()NumberFormatException  IllegalArgumentException异常,NullPointerExcetion  IndexOutOfBoundsExceptionFileNotFoundException等

(2)异常不能任意捕获的,不能任意的写catch(***Exceptionex){} ;只有,有可能抛出相应的异常,才写catch的,否则多余的catch eclipse也会报错的

Java中,异常分为受检查的异常,与运行时异常.

(3) 多个异常捕获时的顺序,先子类异常,再父类异常……最后是Exception基类异常


二:在Java中,异常分为受检查的异常,与运行时异常.

 

         两者都在异常类层次结构中.下面的图展示了Java异常类的继承关系.

1)粉红色的是受检查的异常(checkedexceptions),其必须被try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为

CHeckedException 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守.

2)绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除...而声明为Error的,则属于严重错误,需要根据业务信息进

行特殊处理,Error不需要捕捉。

 

想要了解更多,请参考: Top 10Questions about JavaExceptions

三:

(1)今天看到理工大学的JAVA试题:

    当使用多个catch 语句捕获多个异常时,Java规定捕获 Exception的 catch 语句必须排在最后,如下所示:

    try { …… }

    catch(ClassCastException ex){ …… }

    catch(NumberFormatException ex){ …… }

    catch(Exception ex){ …… }  // 此句必须放在最后!

   因为Exception这个是那几个异常的 父类或者基类!那几个异常都是他的子类,Exception放在最前面后面就没有机会了,其把所有的异常都捕获了。

   即多个异常捕获时的顺序,先子类异常,再父类异常……最后是Exception基类异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值