错误堆栈跟踪不会在控制台中打印,用于使用@响应状态
注释的自定义异常
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public class InternalErrorException extends RuntimeException {
public InternalErrorException(String message) {
super(message);
}
public InternalErrorException(String message, Throwable throwable) {
super(message, throwable);
}
}
抛出异常,如抛出新的InternalErrorException("error", e)
,永远不会在控制台中打印堆栈跟踪,除非我删除注释@响应状态
如何在保留注释@响应状态
的同时打印它?
请参见注释类型响应状态API文档。
警告:在异常类上使用此注释时,或设置此注释的原因属性时,将使用HttpServletResponse. sendError方法。
使用HttpServletResponse. sendError,响应被认为是完整的,不应再写入任何响应。此外,Servlet容器通常会编写一个超文本标记语言错误页面,因此使用不适合REST API的原因。对于这种情况,最好使用响应实体作为返回类型,并完全避免使用@响应状态。
HttpServletResponse. sendError不会抛出您的错误,我想它永远不会因此而被记录。
也许您想为该异常实现异常处理程序以记录它。
相关问题