控制异常输出格式

时间:2019-04-16 09:28:11

标签: java json spring-boot exception

我正在尝试控制错误的显示方式。

我正在尝试执行以下操作:https://stackoverflow.com/a/22271986/10538678,但在全局级别(针对抛出的每个异常)。我尝试了这个问题中描述的示例,但我不知道如何在全局范围内实现此示例

代替:

Exception in thread "threadName" Name of Exception : Description
... ...... ..  // Call Stack

例如,我希望显示错误:

<Error>
    <ErrorCode>customErrorCode</ErrorCode>
    <ErorMsg>Description</ErorMsg>
    <ErrorClass>className</ErrorClass>
    <ErrorThread>threadName</ErrorThread>
</Error>

编辑:我有多个依赖项,它们使用异常处理,因此无法修改它们。

2 个答案:

答案 0 :(得分:1)

您需要添加ControllerAdvice。在您的情况下,将是这样的:

@ControllerAdvice
public class RestResponseEntityExceptionHandler 
  extends ResponseEntityExceptionHandler {

    @ExceptionHandler(value = { Exception.class})
    protected ResponseEntity<String> handleException(Exception e) {
        String bodyOfResponse = "This should be application specific";
        return new ResponseEntiy<String>(bodyOfResponse )
    }
}

答案 1 :(得分:0)

您可以使用Thread.setDefaultUncaughtExceptionHandler();设置DefaultExceptionHandler 顾名思义,它处理throw引发的未捕获异常,但不会打印堆栈跟踪!

但是,如果您在代码中的某处使用了try{}catch(Exception e){e.printStackTrace();},那么您将无法改变它的显示方式