我有一個處理一組記錄的方法。這個方法在處理後返回true \ false。所以,如果所有記錄都被處理(做一些數據庫更新),將返回true.Now,假設處理1條記錄後,拋出一些異常,是否應該在catch塊中寫入result = false(在返回方法結果的末尾)?並且,允許處理其他記錄?如何在這種情況下使用異常?
3
A
回答
1
當添加一條記錄失敗時,繼續向數據庫添加數據幾乎總是錯誤的。記錄經常是相關的。它們代表銀行賬戶中的一組交易。或來自客戶的一批訂單。添加這些與他們失去一個總是一個問題。
您不僅給您的客戶帶來一個包含單個更正記錄的新批處理的大問題,而且讓您容易讓人們忽略錯誤。那種直到很晚才發現或者導致問題的錯誤。總是伴隨着糾正錯誤的巨大代價。
發生錯誤時,拒絕整個批次。使用事務將dbase保持在適當的狀態。使用SqlTransaction並在啓動時調用BeginTransaction()。當一切正常時調用Commit(),在catch子句中調用Rollback()。
您的客戶現在可以返回到生成記錄的子系統,進行更正並重新運行您的程序。您的dbase將始終包含該子系統數據的正確副本。錯誤不能被忽略。
-1
我認爲這可能是類似的東西
int count = 0;
foreach(item in list)
{
try
{
//update DB
++count;
}
catch(Exception ex)
{
//log exception
}
if(count == list.Count)
return true;
else return false;
}
另一種方式
bool result = true;
foreach(item in list)
{
try
{
//update DB
}
catch(Exception ex)
{
//log exception
result = false;
}
return result;
}
0
你如何與例外處理,這將決定你所想要的東西的事件發生什麼很出錯了。正如你所說,你可以在你的catch塊中寫出result = false,但這意味着你只是對調用函數「嘿 - 一些記錄沒有被處理 - 與它一起生活......」說。這對你來說可能夠用了 - 這取決於你想要做什麼。
儘管如此,我還希望將例外的細節寫入日誌。如果你沒有一個方法需要排除異常並寫入日誌,那麼是時候寫一個(或者使用第三方解決方案...)
否則你會丟失可能有用的信息在確定爲什麼事情失敗...
無論你處理這些記錄,你可以或拋出一切,在出現問題是一個設計問題,只有你可以回答 - 我們沒有上下文...
相關問題
- 1. 如何使用在這種情況下
- 2. 在這種情況下使用異常處理是否好?
- 3. 併發修改異常。在這種情況下如何避免?
- 4. 我想在這種情況下引發另一種異常。 PHP
- 5. 如何調用在這種情況下
- 6. 如何在這種情況下製作/應用差異補丁?
- 7. 在這種情況下使用線程?
- 8. 在這種情況下使用Bridge?
- 9. 哪種異常最適合「你不應該在這種情況下運行這種方法」的情況?
- 10. 如何在這種情況下
- 11. 如何在這種情況下
- 12. 如何在這種情況下
- 13. 如何在這種情況下(MySQL的)
- 14. 如何點擊在這種情況下
- 15. 如何在這種情況下
- 16. 如何在這種情況下循環
- 17. LinqtoSQL/C#:如何在這種情況下
- 18. 如何在這種情況下
- 19. 在這種情況下空指針異常拋出Java?
- 20. 爲什麼在這種情況下引發ClassLoader異常?
- 21. 爲什麼在這種情況下引發UnrecoverableKeyException異常?
- 22. 爲什麼我收到ClassCastException異常在這種情況下
- 23. 在這種情況下,我應該重新拋出異常嗎?
- 24. 在這種情況下捕獲異常的最佳做法
- 25. ValueError異常:在這種情況下無效\ X轉義
- 26. 在這種情況下的異常處理
- 27. 是在這種情況下
- 28. 在這種情況下
- 29. 和|| =在這種情況下
- 30. 在這種情況下
你好,我們正在這樣做。在異常塊中,我們記錄異常 – jess 2010-04-13 10:58:30
@Ahmed:這是一個錯誤的例子:空的catch塊非常令人沮喪。 – Marek 2010-04-13 10:59:45
我更新了我的代碼 – 2010-04-13 11:01:18