起因:在需求提測的過程中,測試在做破壞性測試時發現,錯誤消息沒有提示,只有一個錯誤號:
{
"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串中明確的標識還是很重要的,不然如果連一點錯誤消息都沒有的話測試抓瞎咱們開發也抓瞎。