如何处理弹簧休息API上的内部服务器错误(500)?
2022-09-01 12:04:16
日安
我正在研究弹簧休息api,我想确保一切正常。我想记录异常行为,如nullPointerException或数据库连接错误或任何可能引发的异常,但未处理或未假定。
我想捕获任何未处理的异常,并向用户显示一条漂亮的消息,而不是打印堆栈跟踪。
为此,我在互联网上找到了一个解决方案,该解决方案是扩展ResponseEntityExceptionHandler并覆盖handleExceptionInternal方法。
我还喜欢记录404错误,看看是否有人试图攻击我的服务器。
我还在属性文件中添加了这一行:spring.mvc.throw-exception-if-no-handler-found=true
这里是 handleExceptionInternal 的代码
@Override
protected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request) {
GenericResponse response = new GenericResponse();
response.setMessage("Internal error occured, " + ex.getStackTrace()[0]);
System.out.println("big exceptions");
return new ResponseEntity(response, headers, status);
}
我的问题是,当我传递像/abc这样的错误路由时,这个代码运行良好,但是当我从控制器方法中抛出空指针异常时,此方法不会捕获它。
谢谢。