我希望捕获应用程序中发生的所有异常/错误。
为此,我搜索堆栈溢出,并在这个问题上结结巴巴地说:Java Exception Listener
现在我想知道能否以更好的方式完成这一任务。
我目前的申请:
我在一个独立的代码中使用Spring框架和Spring,而不使用web组件。我有一个包含四个主要Beans的Config.java文件:
我现在认为,我可能需要以下几点:
package me.test;
import java.beans.ExceptionListener;
import org.springframework.stereotype.Component;
@Component
public class ErrorListener implements ExceptionListener {
@Override
public void exceptionThrown(Exception e) {
System.out.println("Some error occured ... That's bad :(");
}
} 我不太确定这个ExceptionListener是否像我希望他工作的那样工作,所以我想也许有人可以向我解释我想要的东西是否可能实现。
也许不是和这个听众,而是用另一种方法?
另一个一般性问题是:
一般情况下,我如何注册听众?是不是也有一个@EventListener的阳极?我是否必须将其放在方法之前,然后让它在spring之前作为组件的一部分进行扫描?
还是我必须在我的上下文中手动注册?
谢谢:)
--编辑--
使用AfterThrowing的想法似乎非常好(见下面的评论)。现在,我的项目如下:
主要是:
new AnnotationConfigApplicationContext(Config.class);Config.java
@EnableTransactionManagement
@ComponentScan("me.test.*")
@Configuration
@EnableJpaRepositories
@EnableAspectJAutoProxy
public class Config {
@AfterThrowing(pointcut = "execution(public * *(..)", throwing = "ex")
public void doRecoveryActions(DataAccessException ex) {
System.out.println("Error found");
}
/* loadTimeWeaver, dataSource, entityManagerFactory and transactionManager with the "@Bean" annotation */
}然后在随机文件中抛出错误,比如int i2 = 5 / 0;和其他类throw new Exception("test");。
但不幸的是,它也不起作用
我做错了什么?
发布于 2016-02-14 00:18:14
您可以在抛出建议后使用Spring建议。
https://stackoverflow.com/questions/35386602
复制相似问题