- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Spring Boot 应用程序中实现一个全局未捕获的异常处理程序,它从一堆客户端应用程序收集指标和异常等。看起来处理程序是在我调试时设置的,所以我会假设在我的代码运行后分配了另一个处理程序,或者这些处理程序没有在 spring 应用程序上下文中设置?我的代码如下。
我已经为我的默认异常处理程序创建了此类 -
public class JvmrtExceptionHandler implements Thread.UncaughtExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(JvmrtExceptionHandler.class);
private RestTemplate restTemplate = new RestTemplate();
@Override
public void uncaughtException(Thread thread, Throwable exception) {
String exceptionClass = exception.getStackTrace()[0].getClassName();
String exceptionMethod = exception.getStackTrace()[0].getMethodName();
String exceptionMessage = exception.getMessage();
String exceptionType = exception.getClass().getSimpleName();
String appName = exception.getClass().getPackage().getImplementationTitle();
ExceptionModel thrownException = new ExceptionModel(
exceptionMessage,
appName,
exceptionMethod,
exceptionClass,
exceptionType
);
LOGGER.error("Uncaught Exception thrown of type {}. Sending to JVMRT Main app for processing", exceptionType);
String exceptionUrl = String.format("http://%s:%s/api/", "localhost", 8090);
restTemplate.postForObject(exceptionUrl, thrownException, String.class);
}
}
这个类在另一个将前一个应用程序作为 Maven 依赖项的应用程序中,配置我创建的默认处理程序。我希望该处理程序适用于所有线程,因此我使用静态 Thread.setDefaultUncaughtExceptionHandler 方法来设置它。
@Configuration
public class Config {
@Bean
public JvmrtExceptionHandler jvmrtExceptionHandler() {
JvmrtExceptionHandler exceptionHandler = new JvmrtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(exceptionHandler);
return exceptionHandler;
}
}
我正在使用以下代码测试处理程序。
@RestController
@RequestMapping(value = "/test")
public class ExceptionTest {
@RequestMapping(value = "/exception", method = RequestMethod.GET)
public void throwException() {
throw new RuntimeException();
}
}
我做错了什么?真的很让我头疼,任何帮助将不胜感激。
最佳答案
因为您的RuntimeException被嵌入的tomcat捕获。您可以在org.apache.catalina.core.StandardWrapperValve.invoke中找到try catch>。它打印完整的异常消息,并将错误放入响应中。
如果你想在Spring请求映射中捕获异常,你可以尝试ControllerAdvice和ExceptionHandler。
关于java - Spring Boot 应用程序中未调用 Thread.setDefaultUncaughtExceptionHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35564177/
自定义异常处理程序 public class CustomExceptionHandler implements UncaughtExceptionHandler { private Context
在我正在开发的应用程序中,我使用 Google Analytics 来跟踪未捕获的异常,如下所示: // ...after setting up Google Analytics... Thread.
我正在开发一个 Android 应用程序,对于未捕获的异常,我会这样做 Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExc
我想在记录自己的错误后故意让我的应用程序崩溃。 Handler 在 Application.onCreate() 中注册: // set global exception handler Thread
当我在蜂窝上使用拖动功能时,我得到了 java.lang.IllegalStateException: reportDropResult() by non-recipient 异常。我想通过使用 se
我正在开发一个 Spring 应用程序,想知道是否有框架的一部分可以让我以更优雅的方式做这样的事情,比如在 XML 中配置一些东西? 最佳答案 如果您的问题的目的是通过您的应用程序上下文设置自定义 U
当我的 android 应用程序抛出异常时,我想显示一个自定义对话框来告诉用户发生了错误,所以我使用 Thread.setDefaultUncaughtExceptionHandler 来设置全局异常
我正在尝试在 Spring Boot 应用程序中实现一个全局未捕获的异常处理程序,它从一堆客户端应用程序收集指标和异常等。看起来处理程序是在我调试时设置的,所以我会假设在我的代码运行后分配了另一个处理
在我的 Android 应用程序中,我使用 setDefaultUncaughtExceptionHandler 在用户设备上本地存储有关未处理异常的信息。在一些反馈之后,我怀疑这段代码阻止了内置的谷
我是一名优秀的程序员,十分优秀!