我有一个处理一组记录的方法。这个方法在处理后返回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