Java checked 异常 和 RuntimeException

余生长醉 提交于 2019-12-01 07:08:58

RuntimeException

RuntimeException是非常特殊的子类,你可以不用throw和throws。
哪怕你throw了,也没必要thtows,即使你throws了,调用者也没必要try-catch。


之所以不用在函数上声明,是因为不需要让调用者处理,当该异常发生,希望程序停止,
因为在运行时,出现了无法继续运算的情况,希望程序停止后由程序员对代码进行修正。

自定义异常时,如果该异常的发生,无法继续进行运行,就让自定义异常类继承RuntimeException

运行时异常和ckecked异常的区别

对于异常分两种:检查异常和非检查异常(运行时异常)

检查异常 : 
    编译时被检测的异常(throw后,方法有能力处理就try-catch处理,没能力处理就必须throws)。

运行时异常 : 
    编译时不被检查的异常(运行时异常。RuntimeException及其子类)。


1、机制上

主要表现在以下两个方面 : 
(1)如何定义方法 
(2)如何处理抛出的异常

运行时异常:
    不需要用 throws 声明抛出异常对象所属类,也可以不用 throw 抛出异常对象或异常引用。
    对于调用该方法,也不需要放于 try-catch 代码块中。
    (如果你捕获它,就会冒这么一个风险:程序代码错误被掩盖在运行中无法察觉)

检查异常: 
    一旦 用throw 抛出异常,如果当前方法可处理异常,那么直接在该方法内用try-catch去处理。
    如果当前方法不具备处理该异常的能力,那么就必须在参数列表后方法体前用 throws 声明异常所属类,
    交给调用该方法的调用者(方法)去处理 。


从逻辑的角度来看,checked异常 和 RuntimeException 有着不同的使用目的:
    检查性异常用来指示一种调用方能够直接处理的异常情况(例如: 用户输入错误,程序可以直接捕获并处理,提示用户输入错误), 
    而 RuntimeException 是用来指调用方本身无法处理或回复的程序错误
    (例如,你封装个库给别人用,当别人调用你库中某个方法是,需要传入某些参数,
    如果用户传入的参数不合法,你自己没办法处理,那么你抛出的就应该是运行时异常)。

Exception一自定义异常

https://www.cnblogs.com/loveer/p/11314089.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!