有人能解释一下java.lang.RuntimeException和java.lang.Exception的区别吗?如果我创建自己的异常,我如何决定扩展哪一个?


当前回答

在Java中,有两种类型的异常:已检查异常和未检查异常。已检查异常必须由代码显式地处理,而未检查异常则不需要显式地处理。

对于受控异常,您要么必须在可能抛出异常的代码周围放置一个try/catch块,要么向方法添加一个“throws”子句,以指示方法可能抛出这种类型的异常(必须在调用类或以上类中处理)。

从“exception”派生的任何异常都是受控异常,而从RuntimeException派生的类则是非受控异常。调用代码不需要显式地处理runtimeexception。

其他回答

Exception被选中,RuntimeException未选中。

Checked表示编译器要求您在catch中处理异常,或将您的方法声明为抛出异常(或其超类之一)。

通常,如果API的调用者希望处理异常,则抛出已检查异常,如果调用者通常无法处理异常,则抛出未检查异常,例如其中一个参数的错误,即编程错误。

有两种类型的异常,如果你得到这种类型的异常,你可以从检查异常恢复。运行时异常是不可恢复的,运行时异常是编程错误,程序员应该在编写代码时注意它,继续执行这个可能会给你不正确的结果。运行时异常是关于违反先决条件的,例如,你有一个大小为10的数组,并且你试图访问第11个元素,它将抛出ArrayIndexOutOfBoundException

在Java中,有两种类型的异常:已检查异常和未检查异常。已检查异常必须由代码显式地处理,而未检查异常则不需要显式地处理。

对于受控异常,您要么必须在可能抛出异常的代码周围放置一个try/catch块,要么向方法添加一个“throws”子句,以指示方法可能抛出这种类型的异常(必须在调用类或以上类中处理)。

从“exception”派生的任何异常都是受控异常,而从RuntimeException派生的类则是非受控异常。调用代码不需要显式地处理runtimeexception。

简单地说,如果你的客户端/用户可以从异常中恢复,那么将其设置为Checked Exception,如果你的客户端不能从异常中恢复,那么将其设置为Unchecked RuntimeException。例如,RuntimeException是一个编程错误,就像除零一样,除了程序员自己,没有用户可以做任何事情,那么它就是一个RuntimeException。

RuntimeException是Exception类的子类

这是Exception类的许多子类之一。RuntimeException是在Java虚拟机正常操作期间可以抛出的异常的超类。方法不需要在其throws子句中声明RuntimeException的任何子类,这些子类可能在方法执行期间抛出但未被捕获。

等级制度是

java . lang . object

——java.lang.Throwable

——java.lang.Exception

------------- java.lang.RuntimeException