167 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
本文知识点:使用throw抛出异常对象
说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步。
使用throw抛出异常对象
throw抛出异常的简介
throw抛出异常的2种方案
throw抛出异常的作用
生活实例中业务需求:
开了一个家庭旅馆
住宿需要实名制
旅馆有规定
针对这样的业务场景,就可以通过抛出异常并且处理异常的方式进行解决。
throw抛出异常实现上述业务需求
示例代码:
会有2种方案:
throw抛出异常方案1:使用try-catch
throw抛出异常方案2:使用throws抛出
throws在方法上抛出异常,可以抛Exception,也可以抛出Throwable
在main方法调用testAge()方法时,也还是出现这2种方案:或者try-cath,或者继续往上抛出异常。
如果在main方法里继续往上抛,其实就是直接抛给虚拟机了。
所以,我们暂时先选择用try-catch来处理。
以上就是我们方案2:在编写testAge方法中,使用throw抛出异常对象;在方法声明处,通过throws关键字声明异常类型;再在方法调用处使用异常处理(本例中,即:在调用testAge方法的main方法中用try-catch处理,也可以选择继续throws声明异常往上抛)。
测试方案2 :
2种方案总结:
所以抛出异常并不总是坏事,也是可以帮助我们实现一些特定的处理方案。
关于抛出异常类型问题的总结
抛出异常的方法可以抛Throwable
方法调用处,异常处理的位置也要改成Throwable
如下,这样的处理方案也是完全没有问题的。
因为Throwable是Exception的父类。
即:在方法代码中,throw抛出异常(本例中是Exception)时;在方法的声明处,throws可以声明和throw抛的异常对应的异常,也可以声明throw抛的异常的父类。
那么,throws声明的异常是否可以是throw抛的异常的子类呢?
是不能的
RuntimeException运行时异常类,都属于非检查异常,非检查异常不强制要求要进行处理。
所以,通常用throw抛出异常时,是不建议抛出一个 非检查异常 的。