1
try {
    // some error
} catch (any e) {
    e.extendedInfo = 'New extended info';
    //throw(e);
    //cfcatch.extendedInfo = 'New extended info';
    rethrow;
}

当我(重新)捕获此异常时,不显示扩展信息。我想要发生的是引发的异常保留其所有预捕获属性,包括原始 tagContext 和行号等,但为扩展信息获取新值。

我尝试将 的属性复制到一个新的 attributeCollection 并用ore抛出它,但随后上下文被更改并且错误显示错误的源代码行。throw(e)<cfthrow attributeCollection="#e#" />

当我在这里时,有一种方法可以删除最顶层的堆栈对象,因此似乎从调用上下文中抛出了异常。IE:

function myRethrow(e) (
   throw(e); // <!-- error is actually throw here BUT ...
)
myRethrow(e); // <-- error should appear to have 'happened' here

使用 Railo 3.2

4

1 回答 1

1

我认为你可以使用throw这样的功能:

try {

    try {
        // some error
    }
    catch (any e) {
        e.extendedInfo = 'New extended info';
        throw(argumentCollection = e);
    }

}
catch (any e) {
    WriteDump(e);
}

为我工作。

于 2011-07-28T11:39:23.613 回答