如何修改Railo中的异常对象

时间:2011-07-28 06:01:49

标签: coldfusion railo

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

1 个答案:

答案 0 :(得分:1)

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

try {

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

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

适合我。