Java异常十一:使用throw抛出异常对象;throw和throws的区别

1.为什么要使用throw主动抛出异常对象

根据已有内容可知,在程序中应该尽量避免异常,程序中出现了异常我们要进行抛出和捕获,这是一件很麻烦的事情。

但throw的作用是主动抛出异常对象:这是自己给自己找麻烦?

其实在程序运行的过程中,合理使用异常对象可以用来规避可能出现的风险;也能够利用异常对象完成一些程序的逻辑,以完成一些特定业务需求的特定逻辑。(如酒店入住时,如果年龄小于18或大于80必须要有亲友陪同的情况)

Java异常十一:使用throw抛出异常对象;throw和throws的区别

2.throw示例

throw:可以用来处理特定的业务逻辑产生的一些需求。(这个性质的使用技巧需要在实际开发中逐渐积累经验归纳用法

疑问:自己抛出什么类型的异常,其捕获异常的时候,在该类型异常对应的catch块中,加入特定的处理逻辑,以完成对实际应用中不同逻辑情况的处理?这种应用主动抛出异常的情况,理论上没问题,实际开发中习惯这么干吗?

Java异常十一:使用throw抛出异常对象;throw和throws的区别

(1)第一种策略,自己抛出的自己去处理

Java异常十一:使用throw抛出异常对象;throw和throws的区别

(2)第二种策略,自己抛出的异常,自己不处理接着向上抛

Java异常十一:使用throw抛出异常对象;throw和throws的区别

(注:上图写的,Exception和Throwable两种,其包含的点是:throws向上抛的异常,不能是throw抛出异常的子类)

方法调用处,给了错误提示,要么对这个异常进行捕获,要么继续向上抛(这儿特殊,是main方法,如果main方法还不捕获异常继续向上抛就是抛给虚拟机了,将由系统进行异常处理)

Java异常十一:使用throw抛出异常对象;throw和throws的区别

Java异常十一:使用throw抛出异常对象;throw和throws的区别


3.throw和throws的区别

Java异常十一:使用throw抛出异常对象;throw和throws的区别

Java异常十一:使用throw抛出异常对象;throw和throws的区别