捕捉和抛出一个例外:"引擎盖下"会发生什么?

rni*_*902 4 java exception try-catch

我不熟悉错误/异常处理.这是怎么回事"引擎盖下"当一个例外是caughtthrown

即在try-catch块中捕获异常然后抛出它有什么意义呢?

例如:

  try {
        //Stuff
    } catch(StuffException e) {
        throw new MyException();
    }
}
Run Code Online (Sandbox Code Playgroud)

mis*_*ish 5

关于异常机制的内部工作原理:有很多关于此的文档.我特别喜欢这篇文章:http: //www.javaworld.com/article/2076868/learn-java/how-the-java-virtual-machine-handles-exceptions.html

超短摘要:当抛出异常时,jvm会在一个表中查找,该表继续执行(异常的init()方法).

对于问题的第二部分:

在try-catch块中捕获异常然后抛出它有什么意义?

我看到了抓住另一个异常的一些原因:

  • 您可能希望捕获未经检查的异常(因为您知道"可能发生了一些不好的事情")并抛出一个已检查的异常 - 因此调用者必须处理它.

  • 您想使用自定义Exception,可能还有其他信息/逻辑

  • 您正在实现一个错误外观,例如抛出异常并在外观中捕获它们.

  • 纯链接问题被认为是低质量的.链接可能会在某些时候中断.因此,您应该在答案中包含其内容摘要. (4认同)