为什么选择Java Runtime - unChecked异常需要子类

时间:2014-03-20 16:38:16

标签: java exception-handling

Java Runtime Exception用于检查未检查的异常。它是子类JavaRunTimeException的公认标准。你可以解释一下子类分类的原因而不直接使用它如下所示。

try {
    int x = Integer.parseInt(args[0])/Integer.parseInt(args[0]);
} catch (RuntimeException e) {

}

推荐方法

public class ServiceFaultException extends RuntimeException {}

try {
    int x = Integer.parseInt(args[0])/Integer.parseInt(args[0]);
} catch (ServiceFaultException e) {

}

我想知道这项建议的原因。 ?

2 个答案:

答案 0 :(得分:2)

异常用于为错误提供一些意义,错误不会立即处理。 子类化RuntimeException允许您提供更多含义并区分多个RuntimeExceptions

例如,能够区分IllegalArgumentExceptionNumberFormatException之间的区别很有用,它们都是RuntimeException

编辑:正如@Dyrborg所说,捕捉RuntimeException也可能是危险的,因为任何事情都可能在你不知情的情况下抛出它。更好地处理你控制的东西。

<强> ASIDE: 你可以告诉我&#34;为什么不检查Exception呢?&#34;。 我通常使用RuntimeException s,因为它对应于方法的错误使用(例如非法参数)。这意味着程序员可以确保避免的事情。对于不可靠的用户输入或互联网连接,Exception更合适,因为程序员必须处理这些错误情况。

答案 1 :(得分:1)

  

如果没有直接使用它,可以向我解释子类的原因如下。

适用于子类化任何其他异常的相同原因。该语言提供了捕获特定子类的工具,那么为什么不使用它?