============= 后端_异常处理 ============= 后端程序抛出的各种异常,默认情况下会向前端响应Tomcat或Nginx的5xx页面。 普通用户并不能理解5xx页面内信息的含义。 较好的方式是向前端响应一个友好且简单的Json字符串。 1 添加全局异常处理类 /src/main/java/com/weihome/barblog/common/GlobalExcepitonHandler.java: /** * 全局异常处理类 */ @Slf4j @RestControllerAdvice public class GlobalExcepitonHandler { /** * 运行时异常 */ @ResponseStatus(HttpStatus.BAD_REQUEST) // 400 @ExceptionHandler(value = RuntimeException.class) public Result handler(RuntimeException e) { log.error("运行时异常", e); return Result.error(e.getMessage()); } /** * 身份认证异常 */ @ResponseStatus(HttpStatus.UNAUTHORIZED) // 401 @ExceptionHandler(ShiroException.class) public Result handler(ShiroException e) { log.error("身份认证异常", e); return Result.error(401, e.getMessage()); } } 2 为控制器中的测试方法添加需要认证(RequiresAuthentication)注解 /src/main/java/com/weihome/barblog/controller/UserController.java: ... public class UserController { ... @RequiresAuthentication ... public Result index() { ... } ... } 3 运行测试 执行BarblogApplication.main()... http://localhost:8081/user/index { "code": 401, "message": "The current Subject is not authenticated. Access denied.", "data": null }