参考:
条件是需要业务代码没有处理好异常信息。比如没有捕获异常,或者即便捕获了异常,但是将异常信息作为字符串返回了给客户端。
{"@type": "java.lang.AutoCloseable"
即便捕获了异常,但是将异常信息作为字符串返回了给客户端
对应代码:
@RequestMapping(value = "/deserialize", method = {RequestMethod.POST })
@ResponseBody
public static String Deserialize(@RequestBody String params) {
try {
JSONObject ob = JSON.parseObject(params);
return ob.toString();
}catch (Exception e){
e.printStackTrace();
return e.toString(); // 将异常信息作为HTTP响应的一部分返回了
}
没有捕获异常,于是异常被抛出返回给客户端
对应代码:
@RequestMapping(value = "/deserializeE2", method = {RequestMethod.POST })
@ResponseBody
public static String DeserializeE2(@RequestBody String params) {
JSONObject ob = JSON.parseObject(params);
return ob.toString();
// 并不捕获异常
}
fastjson抛出的异常被捕获,且不返回异常信息
对应代码:
@RequestMapping(value = "/deserializeE1", method = {RequestMethod.POST })
@ResponseBody
public static String DeserializeE1(@RequestBody String params) {
try {
JSONObject ob = JSON.parseObject(params);
return ob.toString();
}catch (Exception e){
e.printStackTrace();
// 并不返回异常信息
}
return "";
}