起因:在需求提测的过程中,测试在做破坏性测试时发现,错误消息没有提示,只有一个错误号:
{
"flag": 0 // 0代码异常标识
}
正常情况应该是这样的:
{
"flag": 0
"error":xxx
}
然后在找寻代码之后发现是空指针异常,在代码里我已经try-catch了为什么到接口测试的时候不提示错误消息呢?后来发现try-catch确实捕获了,但是返回去的json有一个默认的效果就是把null的字段过滤掉。DEBUG的时候返回的参数是这样的:
{
"flag": 0
"error":null
}
json自动把为空的error过滤掉了导致的。由于返回给前台null值是没有意义的,所以最后的解决办法是在try-catch块中做如下处理:
try { ...; } catch (Exception e) { response.setErrorFlag(); response.setError((null == e.getMessage()) ? "NullPointerException" : e.getMessage()); }
按说空指针异常属于运行时异常,是代码逻辑的问题,但是写代码时难免可能会出现尤其是空指针异常,所以返回给前台的json串中明确的标识还是很重要的,不然如果连一点错误消息都没有的话测试抓瞎咱们开发也抓瞎。