gpt4 book ai didi

Java 异常 getMessage() 返回 null

转载 作者:行者123 更新时间:2023-12-02 01:07:05 24 4
gpt4 key购买 nike

在尝试将 JSON 反序列化为对象时,我捕获了一个 SAXParsingException,如下所示。内存不足,所以可能不是 100% 正确,但想法是一样的。

try {
validator.validate(source);
return Response.ok(jsonResponse).build();
}
catch (SAXParseException format) {
String exceptionStr = format.getMessage();
exceptionStr = mapper.writeValueAsString(exceptionStr);
return Response.status(Response.Status.BAD_REQUEST).entity(exceptionStr).build();
}

但是 getMessage() 返回 null。但是如果我只是返回

return Response.status(Response.Status.BAD_REQUEST).entity(format).build();

然后它返回一个如下所示的堆栈跟踪(我已经剪掉了大部分堆栈跟踪,因为它很长)

   {
"cause": {
"cause": {
"stackTrace": [

{
"methodName": "run",
"fileName": "Thread.java",
"lineNumber": 745,
"className": "java.lang.Thread",
"nativeMethod": false
}
],
"lineNumber": 0,
"columnNumber": 0,
"message": "cvc-complex-type.2.4.b: The content of element 'Request' is not complete. One of '{\"blahblahblah":echoData, \"blahblahblah":schemeCode}' is expected.",
"localizedMessage": "cvc-complex-type.2.4.b: The content of element 'Request' is not complete. One of '{blahablah":echoData, \"blahbblahblah":schemeCode}' is expected."
},

那么如果异常附加了一条消息,为什么 getMessage() 返回 null 呢?

最佳答案

您从异常中获取的序列化对象 cause ,消息仍然是空的。 Java 异常(如 SAXParseException)通常包含消息字段和导致异常,在这种情况下,另一个异常是问题的根源。

您可能对使用org.apache.commons.lang3.exception.ExceptionUtils.getRootCauseMessage/getRootCauseStackTrace感兴趣,它找到了根本原因消息(如您​​的示例中也可能是您的原因有原因本身)

关于Java 异常 getMessage() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59873855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com