Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 在实践中,在catch块中抛出异常是否有用?_Java_Exception - Fatal编程技术网

Java 在实践中,在catch块中抛出异常是否有用?

Java 在实践中,在catch块中抛出异常是否有用?,java,exception,Java,Exception,在实践中,在catch块中抛出异常是否有用 比如说 } catch (Exception e) { String msg = "ErrorExample"; log.error(msg); throw new RuntimeException(msg, e); } 无论何时,只要跟踪到发生的错误,就可以使用异常返回。你们唯一记得的是,抛出适当的异常。这是绝对正常的 例如: try { // receive user age as input // try t

在实践中,在catch块中抛出异常是否有用

比如说

} catch (Exception e) {
    String msg = "ErrorExample";
    log.error(msg);
    throw new RuntimeException(msg, e);
}

无论何时,只要跟踪到发生的错误,就可以使用异常返回。你们唯一记得的是,抛出适当的异常。这是绝对正常的

例如:

try {

  // receive user age as input 
  // try to parse user input to integer

} catch (Exception e) {

    throw new IllegalArgumentException("Please enter valid integer value", e);
}

无论何时,只要跟踪到发生的错误,就可以使用异常返回。你们唯一记得的是,抛出适当的异常。这是绝对正常的

例如:

try {

  // receive user age as input 
  // try to parse user input to integer

} catch (Exception e) {

    throw new IllegalArgumentException("Please enter valid integer value", e);
}

当您必须实现一个接口方法,而该接口方法缺少要抛出的异常的throws声明时,这种将选中的异常包装到运行时异常的特殊技巧非常有用。通过将真实异常包装到RuntimeException中,您可以有效地绕过检查异常的机制,这可能是您唯一可用的机制—例如,当您无法控制正在实现的接口时


不过,这不是您应该经常做的事情,因为它会使已检查的异常实际上毫无用处。如果必须采用这种方法,则抛出更具体、自定义的运行时异常是更好的选择,因为您的代码更明确地说明了您进行包装的原因。

当您必须实现一个接口方法,而该接口方法没有针对您希望引发的异常的throws声明时,将选中的异常包装到运行时异常中的这一特殊技巧非常有用。通过将真实异常包装到RuntimeException中,您可以有效地绕过检查异常的机制,这可能是您唯一可用的机制—例如,当您无法控制正在实现的接口时


不过,这不是您应该经常做的事情,因为它会使已检查的异常实际上毫无用处。如果必须采用这种方法,抛出更具体、自定义的运行时异常是一种更好的选择,因为您的代码会更明确地说明您进行包装的原因。

有许多未预见的情况,您需要预测并创建异常,以便在发生异常时进行处理。e、 g.你想在注册表格中上传照片,然后他们上传word文档或其他非图像文件的文件


捕获和处理异常是基于对可能发生不利事件的预见,并且您在异常发生之前充分计划了如何处理异常,以便它不会阻塞您的应用程序。这只是沧海一粟,因为在catch块中抛出异常在许多方面都很有用

有许多未预见的情况,您需要预测并创建异常,以便在发生异常时进行处理。e、 g.你想在注册表格中上传照片,然后他们上传word文档或其他非图像文件的文件


捕获和处理异常是基于对可能发生不利事件的预见,并且您在异常发生之前充分计划了如何处理异常,以便它不会阻塞您的应用程序。这只是沧海一粟,因为在catch块中抛出异常在许多方面都很有用

许多框架和包使用自己的异常类包装内部异常。这就是内部异常的用途。是否使用选中或未选中的异常是一个无关的设计决策,在这个主题上有各种不同的观点,例如参见[java选中与未选中的异常解释]。

许多框架和包使用自己的异常类包装内部异常。这就是内部异常的用途。是否使用选中或未选中的异常是一个无关的设计决策,关于这个主题有各种不同的观点,例如参见[java选中与未选中的异常解释]。

这取决于,但在我看来,只是将异常作为运行时异常重新引用以消除已检查的异常有点代码味道。捕获的异常是您的实现必须处理的异常。抛出的异常是向方法的用户公开的异常。捕获然后抛出是一种处理不同情况的方法。这要视情况而定,但在我看来,只是将异常作为RuntimeException重新抛出以清除选中的异常有点代码味道。捕获的异常是实现必须处理的异常。抛出的异常是向方法的用户公开的异常。捕获然后抛出是一种处理不同情况的方法。即使如此,我认为一个更具体的运行时异常也比仅仅将其包装在RuntimeException中要好。即使如此,我认为一个更具体的运行时异常要比仅仅在运行时异常中包装好。如果抛出任何其他异常,这可能会导致错误消息 如果引发任何其他异常,则可能导致错误消息。