Java 在tomcat环境中记录线程异常
我为springboot控制器编写了一段java代码:Java 在tomcat环境中记录线程异常,java,multithreading,tomcat,exception,spring-boot,Java,Multithreading,Tomcat,Exception,Spring Boot,我为springboot控制器编写了一段java代码: @GetMapping("/exception") public void exceptionInThread() { Thread newThread = new Thread(new Runnable() { @Override public void run() { throw new NullPointer
@GetMapping("/exception")
public void exceptionInThread() {
Thread newThread = new Thread(new Runnable() {
@Override
public void run() {
throw new NullPointerException();
}
});
log.info("daemon: {}, threadGroup: {}, defaultUncaught: {}",
newThread.isDaemon(),
newThread.getThreadGroup(),
Thread.getDefaultUncaughtExceptionHandler()
);
newThread.start();
}
编译完项目后,我运行java-jar application.jar
并调用restapi()。我能找到NPE的踪迹
但在我们的生产环境中,我们将sprintboot编译成WAR,并将WAR放入Tomcat的webapps目录中。然后发生了奇怪的事情。当我触发restapi来运行该方法时,没有弹出任何NPE跟踪。就好像下面有一个默认的未捕获异常处理程序集,该处理程序在没有跟踪的情况下使用异常。但我打印的应用程序日志在两种环境中都是相同的(sprintboot应用程序和tomcat webapp):
这让我很困惑。有什么Tomcat为我准备的吗?你们能给我一些建议吗?你们解决了这个问题吗?请让人们知道。@Light.G尚未:(
2017-07-19 10:35:33.479 INFO 38070 --- [nio-8080-exec-1] com.ruan.restful.ThreadController : daemon: true, threadGroup: java.lang.ThreadGroup[name=main,maxpri=10], defaultUncaught: null