2017-02-27 51 views
1

我正在開發一個JSON異常HTTP響應構建器,它基於在SQL Server Management Studio中執行選擇查詢的錯誤消息。我有一個try/catch塊,在try中發生select查詢執行,並在catch中發生異常消息。如何從catch語句中的Java異常對象檢索多個SSMS查詢錯誤消息?

我的問題是,我的異常響應生成器當前只能從失敗的SSMS查詢中捕獲第一個錯誤消息。如果來自單個查詢的錯誤消息超過1個,它會在第一個查詢後忽略所有內容。我想改進異常響應構建器,以便在同一個響應中返回來自單個查詢執行的每個SSMS錯誤消息。所以如果我拼錯了單元測試中的兩個列名,我希望響應給我兩次「無效的列名」消息。有誰知道這是否可能?有沒有辦法迭代通過一個Exception對象並得到多個錯誤?不是單個錯誤的堆棧跟蹤,而是查詢中多個獨立錯誤的「sys.messages」錯誤消息「text」值?

我抓看起來是這樣的:

catch (Exception e) { 
     response = myresponse.exceptionResponse(e); 
    } 

我不知道Exception對象是否包含來自單個SSMS查詢多個錯誤消息的情況下,或者如果它只是持有的第一個,也許是這樣的我的異常響應構建器只返回單個錯誤消息的原因。也是在我的異常反應是建立在代碼如下所示:

public MyResponse exceptionResponse(Exception exception){ 
    JsonObjectBuilder response = Json.createObjectBuilder(); 
    if (exception != null) { 
     msg = exception.getMessage(); 
     if (msg == null) { 
     msg = NULL_EXCEPTION; 
    } 
} 
response.add("response", msg); 
response.add("id",Integer.toString(counter++)); 
isError = true; 
responseArray.add(response); 
return this; 

}`

如果有一種方法,通過異常迭代,因爲不存在與SQLException的,我肯定可以這樣做,但我可以在迭代Exception對象時找不到任何信息。任何建議將不勝感激!

回答

0

如果拼錯兩個列名稱,SQL Server將只返回一個消息,並且拼寫錯誤的第一個列名稱。我相信不可能發現所有發生的錯誤,因爲在任何給定時間只有一個錯誤發生。如果確定查詢出現問題,SQL Server將不會繼續嘗試執行查詢執行。