Java 控制异常输出格式

Java 控制异常输出格式,java,json,spring-boot,exception,Java,Json,Spring Boot,Exception,我试图控制错误的显示方式 我正在尝试做类似的事情:但是在全局级别(针对每个抛出的异常)。我尝试了这个问题中描述的例子,但我不知道如何在全球范围内实施 而不是: Exception in thread "threadName" Name of Exception : Description ... ...... .. // Call Stack 例如,我希望错误显示: <Error> <ErrorCode>customErrorCode</ErrorCod

我试图控制错误的显示方式

我正在尝试做类似的事情:但是在全局级别(针对每个抛出的异常)。我尝试了这个问题中描述的例子,但我不知道如何在全球范围内实施

而不是:

Exception in thread "threadName" Name of Exception : Description
... ...... ..  // Call Stack
例如,我希望错误显示:

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


自定义错误代码
描述
类名
螺纹名称

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

您可以使用
Thread.setDefaultUncaughtExceptionHandler()设置DefaultExceptionHandler
正如它的名字告诉你的,它会处理通过
抛出的未捕获异常,而不是打印的堆栈跟踪

但是,如果您在代码中的某个地方使用了
请尝试{}catch(异常e){e.printStackTrace();}
您不能做任何事情来改变它的显示方式

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

@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 )
    }
}
@ControllerAdvice
公共类ResponseEntityExceptionHandler
扩展ResponseEntityExceptionHandler{
@ExceptionHandler(值={Exception.class})
受保护的响应句柄异常(异常e){
String bodyOfResponse=“这应该是特定于应用程序的”;
返回新的响应时间(响应正文)
}
}

您是否有
main
方法?如果是这样,您链接的问题仍然有效。只需使用try-catch子句将指令包装在
main
中即可。我有多个会引发错误的依赖项。。。我希望捕获每个错误,并将输出更改为有趣的xmlHmm。。在代码中,我有如下调用:void functionName()抛出异常{…}