美文网首页
《Oracle Java SE编程指南》18-05:throw与

《Oracle Java SE编程指南》18-05:throw与

作者: AT阿宝哥 | 来源:发表于2020-04-30 00:39 被阅读0次
    课程封面-JavaSE-AT阿宝哥

    内容导航

    • 前言

    • 1、throw

    • 2、throws


    前言

    前面我们学习过,异常使用一些特殊类标记的,所谓发生异常,就是抛出一个异常类对象,JVM的异常机制能够识别这样的对象,并进行处理。

    运行期异常都是JVM在运行时自行抛出的,而编译期异常都是程序员在编写代码时,通过语句自行抛出的。

    本节将学习与抛异常相关的关键字。


    1、throw

    关键字throw用于显式抛出异常,利用抛出的异常来标记不正常的事件,从而对事件流统一处理。

    语法:

    
    throw new 异常类构造方法;
    
    

    例如:

    
    throw new Exception();
    
    

    为什么要throw异常呢?主要是要用这种异常类型标记一些不正常的事件,而且希望这些事件发生时,一定能被调用者关注并处理。

    throw抛出异常后,可以有两种方式处理:

    • try-catch捕获异常
      因为如果throw后使用try catch自行处理,意义不大。异常只被处理一次,调用者就没法处理该异常。
      如果throw后使用了try catch,往往也会在catch中再使用throw继续抛出。

    • 使用throws声明异常
      将可能出现异常的代码抛出 ,使用throws 指明该方法引发的异常。推荐使用。

    示例代码:

    
    
    

    2、throws

    用于方法声明处,指出方法引发的异常。可以声明多种异常类型,用逗号分开即可。

    示例:

    
    public void test  throws  异常1,异常2,异常3{
    
    }
    
    

    用了throws关键字,相当于给一个方法加上了不安全标签。使得调用这个方法的方法必须处理这些类型的异常,否则将出现编译错误。当然,处理的方法也依然有两种,即try catch或者继续throws。

    • 任何方法都可以使用throws关键字声明异常类型,包括抽象方法。

    • 子类覆盖父类中的方法,子类方法不能声明抛出比父类范围更大的异常。

    • 使用了throws的方法,调用时必须处理声明的异常,要么使用try-catch,要么继续使用throws声明


    3、层层抛出异常

    catch语句中,处理异常后,再次用throw抛出该异常对象。
    继续抛出异常的作用:使得调用该方法的方法,能够再一次捕获并处理异常

    图片.png

    4、总结

    throw用于方法体中,用来抛出一个实际的异常对象,使用throw后,要么使用try catch捕获异常,要么使用throws声明异常。

    throws用于方法声明处,用来声明该方法可能发生的异常类型,可以是多个异常类型,用来强制调用该方法时处理这些异常。

    抽象方法也可以使用throws,所以说并不是有throw才有throws。

    如果使用throw关键字抛异常,一定不要使用Exception,不能很好标记异常类型。

    如果throw要抛出与业务逻辑有关的异常,需要使用自定义异常类,后续学习


    持续更新,欢迎留言提议!
    码字很累,多点赞多赞赏!


    扫描二维码,关注AT阿宝哥

    相关文章

      网友评论

          本文标题:《Oracle Java SE编程指南》18-05:throw与

          本文链接:https://www.haomeiwen.com/subject/vlhawhtx.html