c#和捕获异常

时间:2011-10-13 13:47:21

标签: c# exception

在处理异常时附加常规异常catch是一种好习惯。一个例子可以使这个问题更清楚

try{
 // do something
}catch(spomespecificException1 ex){
 //logging and other stuff
}catch(spomespecificException2 ex){
 //logging and other stuff
}catch(Exception ex){
 //logging and other stuff
}

我应该将异常catch附加到堆栈

4 个答案:

答案 0 :(得分:7)

一般来说,你根本不应该抓住这些例外。不要捕捉你实际上不知道如何处理的异常。

“处理”意味着修复。如果您无法解决问题,或者无法添加其他信息,请不要捕获异常。

答案 1 :(得分:4)

这取决于具体情况以及您希望在被捕获之前让异常气泡达到多远。

当然有理由支持和反对,但没有针对您的情况的详细信息,这是不可能的。

那么,它有一个普遍的“规则”吗?号

答案 2 :(得分:1)

如果您想要执行与该异常相关的特定处理,那么您发布的代码很好 - 您可能希望在其他一个catch块中执行此操作。一个很好的例子可能是当您尝试连接到SQL数据库并且可以以不同方式处理不同的错误消息时。

另外,请记住,有一个“finally”块可以添加到最后来执行所有清理(和常见)处理代码,但是你不会在那里获得异常信息

答案 3 :(得分:0)

如果您访问应用程序之外的某些内容(如连接错误等),通常会发生异常。

如果你想过滤掉异常类型并为每种特定类型做些不同的事情,那么这样做就没有错。

更好的编码实践将首先防止这些例外情况发生。