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抛出异常实现上述业务需求

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

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

使用throw抛出异常对象

throw抛出异常的简介

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抛出异常实现上述业务需求

throw抛出异常的2种方案

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抛出异常实现上述业务需求

throw抛出异常的作用

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抛出异常对象
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抛出异常对象
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抛出异常对象
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抛出异常对象
167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
使用throw抛出异常对象
throw抛出异常的作用
throw抛出异常实现上述业务需求

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

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

示例代码:
会有2种方案:
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抛出异常实现上述业务需求

throw抛出异常方案1:使用try-catch
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抛出异常实现上述业务需求

throw抛出异常方案2:使用throws抛出
throws在方法上抛出异常,可以抛Exception,也可以抛出Throwable
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抛出异常对象
167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
使用throw抛出异常对象
throw抛出异常的作用
throw抛出异常实现上述业务需求

在main方法调用testAge()方法时,也还是出现这2种方案:或者try-cath,或者继续往上抛出异常。
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抛出异常实现上述业务需求

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

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抛出异常实现上述业务需求

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

测试方案2 :
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抛出异常对象
167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
使用throw抛出异常对象
throw抛出异常的作用
throw抛出异常实现上述业务需求

2种方案总结:
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抛出异常实现上述业务需求

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

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

抛出异常的方法可以抛Throwable
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抛出异常实现上述业务需求
方法调用处,异常处理的位置也要改成Throwable
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抛出异常对象
167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
使用throw抛出异常对象
throw抛出异常的作用
throw抛出异常实现上述业务需求

因为Throwable是Exception的父类。
即:在方法代码中,throw抛出异常(本例中是Exception)时;在方法的声明处,throws可以声明和throw抛的异常对应的异常,也可以声明throw抛的异常的父类。
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抛出异常对象
167 01 Android 零基础入门  03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
使用throw抛出异常对象
throw抛出异常的作用
throw抛出异常实现上述业务需求

那么,throws声明的异常是否可以是throw抛的异常的子类呢?
是不能的
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抛出异常实现上述业务需求

RuntimeException运行时异常类,都属于非检查异常,非检查异常不强制要求要进行处理。
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抛出异常实现上述业务需求

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