2016-11-29 76 views
2

我的Java有點生疏,我想提高我的代碼質量。我想用例外來處理可預期的錯誤,但不知道如何。通過異常處理:com.mysql.jdbc.MysqlDataTruncation

我知道try catch。但是我的總是看起來像這樣沒有任何處理:

try { ...} 

catch (SQLException e) { 
    e.printStackTrace(); 
    System.exit(1); 
} 

我使用的Java JDBC與MySQL和我得到這個具體的錯誤:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: 
Data too long for column 'column_name' 

很顯然,該值過大,需要被截斷。當然,我可以在將其輸入到數據庫之前檢查輸入,但可能還有其他錯誤我也想處理。

如何通過異常處理對此進行補救? SQLException是否是我的錯誤的正確異常?

有這個重複的問題:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'column_name'。但是它沒有討論如何通過異常來處理它。

+0

幾乎從來沒有一個很好的理由使用'System.exit',除非在非常基本的控制檯應用程序中。 –

回答

1

How do I remedy this via exception handling ?

是的,正如你已經提到的,你的應用程序應該覆蓋所有的輸入驗證它是進入DAO層,這樣的要求不會打/到達數據庫發生故障之前正常。爲此,您可以在DTO bean對象上使用javax驗證(如最小值,最大值等,請參閱here)。

Is SQLException the right Exception for my error ?

是,SQLException是正確的異常,但請求如上所述,應在頂層到達DAO或擊球數據庫之前被過濾。此外,您需要注意以下幾點:

(1)您的異常記錄不正確,即使用e.printStackTrace()不正確,而是使用日誌框架如log4j來記錄異常詳細信息。 (2)在捕獲SQLException之後,最佳做法是將它打包回適當的BusinessExceptionthrow,並返回給調用者一個有意義的錯誤消息給用戶界面。如果您的應用程序只是後端服務/進程,那麼您只需使用log4j(取決於業務需求)將SQLException的詳細信息記錄到文件中,然後收集這些例外的統計數據以確定根本原因。