0
点赞
收藏
分享

微信扫一扫

167 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象

167 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象

本文知识点:使用throw抛出异常对象

​说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信与本人交流,共同进步。

使用throw抛出异常对象

throw抛出异常的简介

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_main方法

throw抛出异常的2种方案

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_main方法_02

throw抛出异常的作用

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_03

生活实例中业务需求:

开了一个家庭旅馆

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_04


住宿需要实名制

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_05


旅馆有规定

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_06


167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_07

针对这样的业务场景,就可以通过抛出异常并且处理异常的方式进行解决。

throw抛出异常实现上述业务需求

示例代码:

会有2种方案:

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_异常处理_08

throw抛出异常方案1:使用try-catch

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_09

throw抛出异常方案2:使用throws抛出

throws在方法上抛出异常,可以抛Exception,也可以抛出Throwable

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_10


167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_main方法_11

在main方法调用testAge()方法时,也还是出现这2种方案:或者try-cath,或者继续往上抛出异常。

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_main方法_12

如果在main方法里继续往上抛,其实就是直接抛给虚拟机了。
所以,我们暂时先选择用try-catch来处理。

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_异常处理_13

以上就是我们方案2:在编写testAge方法中,使用throw抛出异常对象;在方法声明处,通过throws关键字声明异常类型;再在方法调用处使用异常处理(本例中,即:在调用testAge方法的main方法中用try-catch处理,也可以选择继续throws声明异常往上抛)。

测试方案2 :

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_14


167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_main方法_15

2种方案总结:

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_16

所以抛出异常并不总是坏事,也是可以帮助我们实现一些特定的处理方案。

关于抛出异常类型问题的总结

抛出异常的方法可以抛Throwable

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_异常处理_17


方法调用处,异常处理的位置也要改成Throwable

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_18

如下,这样的处理方案也是完全没有问题的。

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_main方法_19

因为Throwable是Exception的父类。

即:在方法代码中,throw抛出异常(本例中是Exception)时;在方法的声明处,throws可以声明和throw抛的异常对应的异常,也可以声明throw抛的异常的父类。

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_main方法_20


167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_异常处理_21

那么,throws声明的异常是否可以是throw抛的异常的子类呢?

是不能的

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_抛出异常_22

RuntimeException运行时异常类,都属于非检查异常,非检查异常不强制要求要进行处理。

167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象_异常处理_23

所以,通常用throw抛出异常时,是不建议抛出一个 非检查异常 的。



举报

相关推荐

0 条评论