在我的Spring Boot应用程序中,我使用@ControllerAdvice
和一个自定义异常ServerException
创建了一个自定义异常处理程序,但是当我抛出该自定义异常时,它不会被我的customExcpetionHandler捕获。我能够检查是否实际抛出了异常,是否正按日志所示抛出异常。
以下是我的ServerException的代码:
public class ServerException extends Exception {
/**
*
*/
private static final long serialVersionUID = <uid>;
public ServerException(String message) {
super(message);
}
}
下面是我的GlobalCustomExceptionHandler类:
@ControllerAdvice
@EnableWebMvc
public class GlobalCustomExceptionHandler extends ResponseEntityExceptionHandler{
@ExceptionHandler(ServerException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ModelMap handleServerException(ServerException ex) {
ModelMap modelMap = new ModelMap();
modelMap.addAttribute("status", "ERROR_400_Bad_Request");
modelMap.addAttribute("error_message", ex.getMessage());
return modelMap;
}
}
我在restcontroller之一中抛出异常,如下所示:
throw new ServerException("invalid server configs");
但是我只能看到异常被打印到日志文件中,而不能作为GlobalCustomExceptionHandler类的handleServerException()方法中提到的响应来获取。
可能是什么原因?
答案 0 :(得分:1)
我刚刚使用简单的REST端点复制了您复制粘贴的代码,并且可以按预期工作:
@RestController
public class SystemController {
@GetMapping(value = "/system")
public ResponseEntity<Object> getSystem() throws ServerException {
if (true)
throw new ServerException("Checking this out");
return new ResponseEntity<>(HttpStatus.OK);
}
}
呼叫http://localhost:8080/system
结果:
{"status":"ERROR_400_Bad_Request","error_message":"Checking this out"}
我需要更大的图景来帮助您。粘贴该控制器以及主应用程序配置类。