【发布时间】:2012-11-06 13:21:47
【问题描述】:
我现在和过去都深入阅读并讨论了以下问题和文章:
Main method code entirely inside try/catch: Is it bad practice?
我将使这篇文章成为我组织中异常处理的编码标准!非常好,但没有回答我: http://www.codeproject.com/Articles/9538/Exception-Handling-Best-Practices-in-NET
What is the Best practice for try catch blocks to create clean code?
Best practices for exception management in Java or C# 在这里:我不喜欢这种说法 :( 您不应该尝试在每个可能的地方捕获每个异常。
Should multiple Try/Catch blocks in a method be combined
当我需要决定用 try-catch 语句封闭一些代码块时,我遇到了一个问题,我知道应该封闭的代码是错误代码,我必须检查我可以检查的内容,但是例如: 我需要在某个文本文件中写一行,我应该检查文件是否存在,如果我有写权限,我应该检查磁盘上是否有空间,或者磁盘是否可写,如果我检查了空间,如果我在编写文件时发生了什么事(其他一些应用程序或线程使用了空间,或者可移动驱动器已被删除?),如果我检查了这些事情并处理了 IOException 和 SecurityException 和其他潜在的异常,或者我应该只检查而不用 try-catch?
另一个例子: 我正在使用EntityFramework访问数据库,访问时可能会联系到数据库,我知道我应该检查连接是否关闭并尝试打开它,但是有很多很多东西可能导致此语句失败,数据库可能是在可移动驱动器上,读取时可能会删除该驱动器,DBMS 的服务可能因任何原因停止,不会引发空间异常,在我尝试执行我的代码一段时间后,数据库的方案可能会改变 *** *原因,我怎样才能防止我的代码失败,我可以检查所有我可以检查的东西,然后继续吗?或者我应该使用 try catch 来处理我可以预料到的异常,即使我已经检查过了?
请给我你的答案的参考,而不是一般的答案!
编辑
请务必阅读: http://msdn.microsoft.com/en-us/library/seyhszts.aspx
【问题讨论】:
-
如果您投了反对票,请发表评论!
-
您只关心它为什么会失败,如果您可以或愿意在代码中进行纠正它的工作。否则,您可以只记录异常并重新抛出。大多数应用不需要您提议的那种稳健性,有些则需要。
标签: c# .net exception exception-handling try-catch