java - 在java中重新抛出异常

标签 java exception exception-handling

我有一个关于在 Java 中重新抛出异常的非常简单的问题。

这是代码片段:

public static void main(String[] args) throws FileNotFoundException {
    try {
        FileReader reader = new FileReader("java.pdf");
    } catch (FileNotFoundException ex) {
        throw ex;
    }
}

public static void main(String[] args) throws FileNotFoundException {        
        FileReader reader = new FileReader("java.pdf");        
}

为什么我们需要在第一个版本中重新抛出 ex 而第二个版本看起来更优雅?可能有什么好处,哪个版本优于另一个版本?

最佳答案

你是对的。第二个版本更好。此外,第一个版本没有任何意义。除了异常的堆栈跟踪将是“错误的”之外,它的作用相同。

“重新抛出”异常的原因有以下几种:

  1. 如果你之前有事要做。
  2. 如果您捕捉到一种类型的异常并抛出另一种类型的异常:

例子:

try {
   // do something
} catch (IOException ioe) {
    throw new IllegalStateException(ioe);
}

关于java - 在java中重新抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972765/

相关文章:

java - Guava 缓存和保留检查的异常

.net - .NET中非托管 native 异常/崩溃的处理

Java多线程: All of my threads get the same thread id

java - 如果我的java版本较低,如何修复此代码?

php - Codeigniter 3 show_404函数问题-MY_Exception无法加载

c++ - 使用自定义字符串参数捕获抛出异常

java - 聚合异常

java - 使用 Spring MVC 和 Apache POI 下载 PPT 文件

java - 用 JAVA 固定十进制数

PostgreSQL 和 Hibernate java.io.IOException : Tried to send an out-of-range integer as a 2-byte value