Java 如何获取spring错误控制器中抛出的异常类
我有我的Spring错误控制器,我需要得到实际的异常类,这样我就可以打印堆栈跟踪和其他类似的东西。 这是我的错误控制器Java 如何获取spring错误控制器中抛出的异常类,java,html,spring,spring-boot,maven,Java,Html,Spring,Spring Boot,Maven,我有我的Spring错误控制器,我需要得到实际的异常类,这样我就可以打印堆栈跟踪和其他类似的东西。 这是我的错误控制器 @Controller public class ErrorController implements org.springframework.boot.web.servlet.error.ErrorController { @RequestMapping("/error") public String handleError() {
@Controller
public class ErrorController implements org.springframework.boot.web.servlet.error.ErrorController {
@RequestMapping("/error")
public String handleError() {
return "somethingwentwrong";
}
@Override
public String getErrorPath() {
return null;
}
}
我知道这并不多,但我需要异常对象能够进行一些额外的处理。如果您希望根据引发的异常类型执行不同的代码,您应该考虑使用
@ControllerAdvice
以及@ExceptionHandler
。任何未使用@ExceptionHandler
处理的异常都将冒泡为默认的ErrorController
(尽管您可以在处理程序中处理异常
,然后所有异常都将通过自定义处理程序处理)。比如:
@ControllerAdvice
@RestController
公共类CustomResponseEntityExceptionHandler扩展了ResponseEntityExceptionHandler{
@ExceptionHandler(MyException.class)
受保护的响应句柄异常(MyException ex){
//你的代码在这里
}
@ExceptionHandler(Exception.class)
受保护的响应句柄异常(异常ex){
//你的代码在这里
}
}
如果您希望根据抛出的异常类型执行不同的代码,您应该考虑使用
@ControllerAdvice
以及@ExceptionHandler
。任何未使用@ExceptionHandler
处理的异常都将冒泡为默认的ErrorController
(尽管您可以在处理程序中处理异常
,然后所有异常都将通过自定义处理程序处理)。比如:
@ControllerAdvice
@RestController
公共类CustomResponseEntityExceptionHandler扩展了ResponseEntityExceptionHandler{
@ExceptionHandler(MyException.class)
受保护的响应句柄异常(MyException ex){
//你的代码在这里
}
@ExceptionHandler(Exception.class)
受保护的响应句柄异常(异常ex){
//你的代码在这里
}
}
不用担心,伙计们,我解决了这个问题,我只需要在内置的错误控制器中挖一些弹簧来获取堆栈跟踪。不用担心,伙计们,我解决了这个问题,我只需要在springs内置的错误控制器中进行一些挖掘,以获得stacktrace。您是否检查了
BasicErrorController
中的代码?这是否回答了您的问题?您是否检查了BasicErrorController
中的代码?这是否回答了您的问题?我希望在我的handleError
方法中获得实际的异常,类似于exception e=
,这样我就可以对它进行其他处理。这是因为spring默认错误控制器在白标签错误页面中打印stacktrace,因此必须有某种方式才能获得异常@Ben M这就是使用@ExceptionHandler
s的目的,因为它们为您提供了实际的异常类,以便您可以对其进行操作。是的,我尝试过使用它,但它会捕获每个错误并破坏我的应用程序。我使用Exception.class
作为它的参数。如果您使用Exception.class
,它将根据设计捕获每个错误。您应该为要采取操作的每种不同异常类型创建特定的异常处理程序exceptionhandleerror
方法,例如exception e=
,这样我就可以对它进行其他处理。这是因为spring默认错误控制器在白标签错误页面中打印stacktrace,因此必须有某种方式才能获得异常@Ben M这就是使用@ExceptionHandler
s的目的,因为它们为您提供了实际的异常类,以便您可以对其进行操作。是的,我尝试过使用它,但它会捕获每个错误并破坏我的应用程序。我使用Exception.class
作为它的参数。如果您使用Exception.class
,它将根据设计捕获每个错误。您应该为要对其执行操作的每个不同异常类型创建特定的异常处理程序