有人能解释一下java.lang.RuntimeException
和java.lang.Exception
之间的区别吗?如果我创建自己的异常,我如何决定扩展哪个异常?
发布于 2010-02-03 14:44:56
在Java中,有两种类型的异常:受控异常和非受控异常。已检查的异常必须由代码显式处理,而未检查的异常不需要显式处理。
对于已检查的异常,要么必须在可能引发异常的代码周围放置try/catch块,要么向方法添加"throws“子句,以指示该方法可能抛出这种类型的异常(必须在调用类或以上类中处理)。
任何从" exception“派生的异常都是已检查的异常,而从RuntimeException派生的类是未检查的。RuntimeExceptions不需要由调用代码显式处理。
发布于 2010-02-03 14:44:39
检查异常,取消检查RuntimeException。
选中意味着编译器要求您在catch中处理异常,或者将您的方法声明为抛出它(或它的一个超类)。
通常,如果API的调用方希望处理异常,则抛出检查异常;如果调用方通常无法处理异常,则抛出未检查异常,例如其中一个参数出错,即编程错误。
发布于 2014-05-08 17:22:14
RuntimeException是Exception类的子类
这是Exception类的许多子类之一。RuntimeException是那些可以在Java Virtual Machine正常操作期间抛出的异常的超类。方法不需要在其throws子句中声明在方法执行期间可能抛出但未被捕获的RuntimeException的任何子类。
层级结构是
java.lang.Object
-java.lang.Throwable
-java.lang.Exception
https://stackoverflow.com/questions/2190161
复制相似问题