我想提一个关于JSONException的建议:
我在反序列化时偶然会出现JSON格式错误的情况,得到类似以下的异常信息:
com.alibaba.fastjson.JSONException: syntax error, string
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:575)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:1181)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:497)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1356)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1322)
at com.alibaba.fastjson.JSON.parse(JSON.java:152)
at com.alibaba.fastjson.JSON.parse(JSON.java:162)
at com.alibaba.fastjson.JSON.parse(JSON.java:131)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:223)
“syntax error, string”的异常报告对于用户来说并没有多大的信息价值,用户更希望看到的是导致异常发生的JSON字符串的具体内容。类似于SQLException在message当中描述出导致错误的SQL内容,这才是用户真正关心的。
由于JSONException是Unchecked异常,可能有些用户不会习惯于将parse方法包于try...catch块中。然而很多异常情况可能是上了生产环境后才发现的,如果日志没有将异常JSON打出,用户只能寄希望于下一次错误的发生。
我想说的是,在异常信息中重现现场是有必要的,是否能合理地优化下JSONException的Message内容呢?我的建议是,可以保留当前的错误信息,但可以利用Exception嵌套的特性来传递更多的异常信息。
暂无答案!
目前还没有任何答案,快来回答吧!