捕获和重新抛出java异常的术语是什么?

时间:2011-08-15 15:38:12

标签: java exception-handling

我似乎记得这样一个非常具体的术语:

try {
  operation();
} catch (SomeException se) {
  throw new OtherException(se);
}

-OR -

try {
  operation();
} catch (SomeException se) {
  throw new OtherException("new message, forget original exception");
}

我想在一些文档中使用正确的术语。有人可以慢慢记住我的记忆吗?


编辑:据我了解JB Nizet引用的链接,链接是将原始异常传递给新构造函数的行为,因此堆栈跟踪将包含原始异常。但那是我正在寻找的概念。对不起,如果我的问题最终误导了这种方式。

7 个答案:

答案 0 :(得分:4)

响应您的编辑:在这种情况下,您只是“抛出”异常。它碰巧被扔进了一个陷阱。而不是使用可能令人困惑的术语,如“转换”(我认为这意味着变异,而不是新的东西),我建议你只是明确地说出你在做什么。


您正在用另一个“包装”捕获的异常。另一个术语是“异常链接”

请注意,重新抛出异常是不同的,因为您没有创建新的异常,只是捕获它来做一些日志记录(或其他东西),然后再次抛出它。为了证明:

try {
  operation();
}
catch (SomeException se) {
  throw se;
}

答案 1 :(得分:3)

它被称为重新抛出或异常翻译,以便将不同的api与一个抽象符号(通常在spring框架中完成)协调起来。

答案 2 :(得分:2)

我使用" rethrow"没有任何耻辱。

无论如何,你正在做的是在新的内容中封装异常。

答案 3 :(得分:2)

例外包装例外链接

答案 4 :(得分:1)

我相信我已经看到这被称为包装异常。对不起,如果那不是你要找的那个词。

答案 5 :(得分:1)

您正在做的事情通常称为"exception chaining"。我在Java 1.4中介绍过。

答案 6 :(得分:1)

它也被称为

  

异常链接