如何修改 Railo 中的异常对象

发布于 2024-11-26 12:07:47 字数 719 浏览 0 评论 0原文

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

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

我尝试将 e 的属性复制到新的 attributeCollection 中,并使用 throw(e)抛出该属性; 但随后上下文发生更改,并且错误显示错误的源代码行。

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

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

使用 Railo 3.2

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

When I (re)catch this exception the extendedInfo is not displayed. What I want to happen is the raised exception keeps all of its pre-catch properties including the original tagContext and line numbers etc but gets a new value for extendedInfo.

I've tried copying the attributes of e into a new attributeCollection and throwing that with throw(e) or <cfthrow attributeCollection="#e#" /> but then the context is changed and the error displays the wrong line of source code.

While I'm at it is there a way to to drop the topmost stack object so an exception appears to have been thrown from the calling context. ie:

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

Using Railo 3.2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不语却知心 2024-12-03 12:07:47

我认为你可以像这样使用 throw 函数:

try {

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

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

对我有用。

I think you can use throw function like this:

try {

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

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

Works for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文