Pet*_*zov 9 java spring aspect spring-aspects
我有一个庞大的Java应用程序。我想拦截所有Java异常并通过电子邮件发送它们。我不能在任何地方添加代码以通过发送代码,try-catch因此是否可以使用例如Aspect将异常拦截为低级类并获取异常内容?
还是有某种方法可以覆盖某些内部Java类并获取异常有效负载?
有什么可能?
您可以使用spring-aop的@AfterThrowing建议。
@Aspect
@Component
public class MailExceptionAspect {
    @AfterThrowing(value="execution(* com.example..*.*(..))", throwing="ex" )
    public void mailAfterThrowing(Throwable ex) {
        // do something to send an email
    }
}
这将拦截package中所有未处理的异常com.example。注意,在应用程序中处理(捕获)的异常不能被拦截。
另一个解决方案是使用应用程序的日志记录框架。许多框架,例如logback,log4j提供了可以通过电子邮件发送日志的内置配置。
小智 2
如果所有正在运行的线程都在 ht 控制中,则可以使用 Thread.UncaughtExceptionHandler 的实现来标记它们。当然,如果应用程序具有深层多线程特性,这可能会有点棘手。
| 归档时间: | 
 | 
| 查看次数: | 386 次 | 
| 最近记录: |