@ExceptionHandler({NoHandlerFoundException.class}) @ResponseStatus(HttpStatus.NOT_FOUND) public R handleError(NoHandlerFoundException e) { log.error("404没找到请求:{}", e.getMessage()); return R.fail(ResultCode.NOT_FOUND, e.getMessage()); }
一、该问题的重现步骤是什么?
构造不存在html请求地址
2. 请求未返回任何信息
二、分析
请求先进入@ExceptionHandler
@ExceptionHandler({NoHandlerFoundException.class}) @ResponseStatus(HttpStatus.NOT_FOUND) public R handleError(NoHandlerFoundException e) { log.error("404没找到请求:{}", e.getMessage()); return R.fail(ResultCode.NOT_FOUND, e.getMessage()); }
之后进入BladeErrorController
可以看到options,只能包括STACK_TRACE或者啥也没有
导致执行上诉代码remove时发生异常,因为errorAttributes这个Map为BladeBeanMap,改map没有提供remeove方法。所以这里的rmeove会抛出异常,且前边代码限制,无法控制不进入执行remove的if
扫一扫访问 Blade技术社区 移动端