try {
// some error
} catch (any e) {
e.extendedInfo = 'New extended info';
//throw(e);
//cfcatch.extendedInfo = 'New extended info';
rethrow;
}
当我(重新)捕获此异常时,不显示extendedInfo。我想要发生的是引发的异常保留了所有的预捕获属性,包括原始的tagContext和行号等,但是为extendedInfo获取了一个新值。
我已经尝试将e
的属性复制到一个新的attributeCollection中并使用throw(e)
或<cfthrow attributeCollection="#e#" />
抛出该属性,但随后更改了上下文并且错误显示了错误的源代码行代码。
当我在它时,有一种方法可以删除最顶层的堆栈对象,因此似乎从调用上下文抛出异常。即:
function myRethrow(e) (
throw(e); // <!-- error is actually throw here BUT ...
)
myRethrow(e); // <-- error should appear to have 'happened' here
使用Railo 3.2
答案 0 :(得分:1)
我认为您可以使用throw
这样的功能:
try {
try {
// some error
}
catch (any e) {
e.extendedInfo = 'New extended info';
throw(argumentCollection = e);
}
}
catch (any e) {
WriteDump(e);
}
适合我。