【发布时间】:2011-05-31 05:19:58
【问题描述】:
有时我这样做,我也看到其他人也这样做:
VB:
Try
DontWannaCatchIt()
Catch
End Try
C#:
try
{
DontWannaCatchIt();
}
catch {}
我知道我应该抓住每一个重要的异常 我期待并对此采取一些措施,但有时并不重要 -还是我做错了什么?
try 块的这种用法是否不正确,并且至少有一个 catch 或 finally 块的要求表明了这一点?
更新:
现在我明白了其中的原因,我至少应该对空的 catch 块发表评论,以便其他人了解它为什么是空的。我也应该只捕获我期望的异常。
幸运的是,我正在用 VB 编写代码,所以我可以一口气写出来:
Catch ex As Exception When TypeOf ex Is IOException _
OrElse TypeOf ex Is ArgumentException _
OrElse TypeOf ex Is NotSupportedException _
OrElse TypeOf ex Is SecurityException _
OrElse TypeOf ex Is UnauthorizedAccessException
'I don't actually care.
End Try
【问题讨论】:
-
@asawyer 不,我已经说过我知道我应该捕捉每一个重要的异常,我会使其更加粗体,因为它对你来说不够清晰。
-
你能举一个例子,你认为一个异常“不够重要,不能被捕获”吗?很可能,那里是你的错误。
-
@Camilo 捕捉每一个重要的异常是一个坏的想法。您只捕获您可以处理的内容,否则您的应用程序应该可怕地死掉并让别人知道它已经死了,以便程序员可以修复它。
-
@George 已编辑,因为这仍然不是我的意思,我的错。
-
现在您已经编辑了它,问题在哪里?捕获您可能遇到的重要错误,例如您想要吞下的 IO 问题意味着您需要指定它们,而 c# 对此具有非常好的语法。
标签: c# .net vb.net exception-handling try-catch