有人请解释之间的差异java.lang.RuntimeException和java.lang.Exception?如果创建自己的异常,我该如何决定扩展哪一个?
java.lang.RuntimeException
java.lang.Exception
通常,RuntimeExceptions是可以通过编程方式防止的异常。例如 NullPointerException,ArrayIndexOutOfBoundException。如果null在调用任何方法之前进行检查,则NullPointerException永远不会发生。ArrayIndexOutOfBoundException如果你先检查索引,同样也不会发生。RuntimeException不会由编译器检查,因此它是干净的代码。
RuntimeExceptions
NullPointerException
ArrayIndexOutOfBoundException
RuntimeException
在Java中,有两种异常类型:已检查的异常和未检查的异常。必须通过代码显式处理已检查的异常,而无需显式处理未检查的异常。
对于已检查的异常,你必须在可能引发异常的代码周围放置try / catch块,或者在方法中添加“ throws”子句,以指示该方法可能会抛出这种类型的异常(必须是在调用类或更高级别中处理)。
从“ Exception”派生的任何异常都是已检查的异常,而从RuntimeException派生的类则未经检查。调用代码不需要显式处理RuntimeExceptions。