fastjson 反序列化出现异常时,异常信息无法重现现场

rlcwz9us  于 2021-11-27  发布在  Java
关注(0)|答案(0)|浏览(181)

我想提一个关于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嵌套的特性来传递更多的异常信息。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题