我似乎记得这样一个非常具体的术语:
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引用的链接,链接是将原始异常传递给新构造函数的行为,因此堆栈跟踪将包含原始异常。但那是不我正在寻找的概念。对不起,如果我的问题最终误导了这种方式。
答案 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)
它也被称为
异常链接