java - 在Java中,有没有办法重新捕获或列出以前捕获的异常

标签 java exception

我有一个无法修改的 API,它基本上执行以下操作:

public void CatchException() {
  try {
    some code...
  } catch (Throwable t) {
    System.out.println(t.toString());
  }
}

我在我的方法中调用此 API:

public void myMethod() {
  try {
    someClass.CatchException();
  } catch (Throwable t) {
     ... exception is not recaught
  }
}

在对 API 的调用中,异常不会被第二次捕获,因为它是在 API 方法中消耗的...这是预期的 Java 行为...

有没有办法让我在无法修改API代码的情况下检测到API方法中抛出了异常?

最佳答案

方法必须要么处理异常,要么不处理异常;但是,这与它是否处理异常或执行某种异常相关的工作关系不大。

下面是一个方法示例,该方法知道异常,但决定将它们委托(delegate)给上层调用堆栈来处理。

public void doSomething() throws Exception {
  try {
    some code...
  } catch (Exception t) {
    System.out.println(t.toString());
    throw t;
  }
}

public void doAndHandle() {
  try {
    doSomething();
  } catch (Exception t) {
    System.out.println(t.toString());
  }
}

请注意,我可以在引发异常后执行处理(就像我在 doSomething() 中所做的那样,但我不能既抛出异常又不抛出异常。处理异常是一个有意识的决定,不抛出异常)抛出它。处理异常可能无法完全处理它(如 doSomething() 中所示)

关于java - 在Java中,有没有办法重新捕获或列出以前捕获的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532130/

相关文章:

android - 为什么我经常收到 ActivityNotFound 异常?

c# - 为什么当内部 "finally"抛出时外部 "catch"没有被执行?

java - 从 bean 中检索字段值时出错

c# - 如何处理 Task.Run 异常

java - getClass().getResource(...) 找不到我的图像

java - 我可以使用 JNDI 访问文件/其内容吗?

java - 如何区分程序员异常和 JVM 异常

java - 修改java代码错误

java - 从 PHP 切换到 Java 或 .Net

java - 如何修改hibernate生成的SQL查询?