gpt4 book ai didi

java - 总是 try-catch-finally 异常?中央错误管理?

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:54 25 4
gpt4 key购买 nike

我想知道如果我想捕获错误,我是否总是必须使用使代码困惑很多的 try-catch-error block 。

或者我能以某种方式定义一个全局错误捕捉器吗?特别是关于 Java EE Webapps。

对于每个未处理的 ex,我想记录到一个特定的文件,并向用户显示一个一般错误页面。

我想我可以通过方面来实现。但是为了在 @AfterThrowing 上捕捉方面,我也必须引入 try-catch block 。并且由于没有用于支持门面的中心类,我将不得不用 trycatch 包围每个支持方法。然后方面会接受它们,但我需要在没有显式抛出异常的情况下捕获一些东西。

我怎么能那样呢?

最佳答案

您正在寻找declare soft 结构。这会将给定的异常包装在 SoftException(AspectJ 特定的 RuntimeException)中,这样就不需要显式处理它。然后,您可以使用一些 AfterThrowing 建议来处理所有这些异常。

declare soft 仅存在于代码样式 AspectJ 中(即 - 没有注释)。因此,您将需要使用 AspectJ 编译器编译您的代码,但如果您愿意,您仍然可以为此使用加载时织入。

看这里: http://www.eclipse.org/aspectj/doc/released/progguide/quick-other.html

这里: http://www.eclipse.org/aspectj/doc/released/adk15notebook/declare-soft.html


这是一个代码片段,展示了它是如何完成的:

aspect ErrorHandler {
declare soft : Exception : within(*);
after() throwing(Exception e) : handler(e) {

// do something...
}
}

这将通过自定义错误处理程序路由系统中的所有 异常。而且您不需要明确地捕获或抛出它们。

它简单而强大。不过,也许太强大了。我建议细化并更精确地明确哪些异常应该被软化,哪些需要被告知,但这是基本的想法。

关于java - 总是 try-catch-finally 异常?中央错误管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com