Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 何时使用扩展RuntimeException的用户定义类?_Java_Exception Handling - Fatal编程技术网

Java 何时使用扩展RuntimeException的用户定义类?

Java 何时使用扩展RuntimeException的用户定义类?,java,exception-handling,Java,Exception Handling,我创建了一个用户定义的类(比如ClassA),它扩展了Exception,另一个类(ClassB)扩展了RuntimeException。请建议我在我的应用程序中应该在哪里使用它们 我是否应该在if语句中使用ClassB(它扩展了RuntimeException),就像帐户余额低一样?运行时异常的一个例子是运行时环境抛出的东西,比如算术或索引越界(最常见的)。这些主要是技术性的 可以通过扩展异常类来处理业务逻辑。标准异常是检查异常。因此,您需要一个try/catch块。 运行时异常是不需要try

我创建了一个用户定义的类(比如
ClassA
),它扩展了
Exception
,另一个类(
ClassB
)扩展了
RuntimeException
。请建议我在我的应用程序中应该在哪里使用它们


我是否应该在if语句中使用
ClassB
(它扩展了
RuntimeException
),就像帐户余额低一样?

运行时异常的一个例子是运行时环境抛出的东西,比如算术或索引越界(最常见的)。这些主要是技术性的


可以通过扩展异常类来处理业务逻辑。

标准异常是检查异常。因此,您需要一个try/catch块。 运行时异常是不需要try/catch块的未检查异常。它们不应该发生


对于您的业务逻辑,如低账户余额,您可能应该使用检查异常,以便您必须处理它们。

约书亚·布洛赫的经验法则是:

  • 使用检查异常(扩展异常),您希望应用程序能够从其进入的异常状态中恢复
  • 对于您不希望可能恢复的情况,请使用未经检查的异常(扩展RuntimeException)

浏览这些问题可能会回答您的问题,创建一个单独的类(在项目中扩展RuntimeException的ClassB,并像下面这样使用它,如果(value==null){抛出新的ClassB(value不能为null)}在我看来,应该通过在开发中启用一个部分,检查断言并在生产中禁用它们,特别是在方法参数中禁用空值来捕获这些断言。是的,您也可以按照建议执行类似操作,但在开发中捕获这些断言是一个很好的实践。因此,我建议使用断言。请建议任何实时示例此主题已被耗尽:)我建议在javadoc中查看RuntimeException的直接子案例,然后使用好朋友google。我甚至在谷歌上为你搜索了一个好消息:干杯