有没有办法在单独的类中创建一个侦听器,只要在项目中捕获到异常,就会运行某段代码?
我的代码中有很多try-catches,如果发现异常,我希望使用log4j查看日志。我可以很容易地为每一次尝试捕捉做以下事情(只需要一些时间):
private static final Logger logger = LogManager.getLogger(Example.class);
public void testMethod() {
try {
// some code here that could throw an exception
} catch(Exception e) {
logger.error("Unexpected error has occurred: ", e);
}
}
这将使用log4j记录异常。但是,我需要这样做超过50次,而且它是多余的,我宁愿能够使用1种方法来做到这一点。那么,有没有办法做这样的事情呢?
public class ListenerClass {
private static final Logger logger = LogManager.getLogger(ListenerClass.class);
// This method will be listening for exceptions to be caught within the project
/**
* @param e - The exception that was just caught
*/
public void listenerMethod(ExceptionCaught e) {
logger.error("An exception has been thrown: ", e);
}
}
这可能吗?
由于
答案 0 :(得分:2)
标准java方式:
Length
将处理未被捕获的array
,除非另有说明,否则它将适用于所有应用程序线程。
请记住,出于某种原因会抛出异常,不应忽略,尤其是Thread.setDefaultUncaughtExceptionHandler( (thread, throwable) -> {
log(throwable.getMessage(), thread.getId());
});
s。
如果您使用的是RuntimeException
的旧版本(8之前),则必须显式实例化匿名类:
RuntimeException
答案 1 :(得分:1)
查看Thread.setDefaultUncaughtExceptionHandler()