【发布时间】:2016-08-15 03:39:31
【问题描述】:
我正在自学 C#,我正在学习 try、catch 和 finally。我正在使用的书正在讨论 finally 块如何运行,而不管 try 块是否成功。但是,写在 catch 块之外的代码不会运行,即使它不在 finally 中?如果是这样,最后的意义是什么?这是本书提供的示例程序:
class myAppClass
{
public static void Main()
{
int[] myArray = new int[5];
try
{
for (int ctr = 0; ctr <10; ctr++)
{
myArray[ctr] = ctr;
}
}
catch
{
Console.WriteLine("Exception caught");
}
finally
{
Console.WriteLine("Done with exception handling");
}
Console.WriteLine("End of Program");
Console.ReadLine();
}
}
【问题讨论】:
-
我建议您查看MSDN article !它很简短,并且有一个很好的例子。
-
如果你的catch语句被设计为抛出异常,finally块仍然会执行。 catch 块之外的任何东西都不会。
-
作为最佳实践,您不应该像
catch {这样一般捕获,因为这会删除调用堆栈,但会捕获您可以针对特定情况处理的特定故障。我将此称为“尝试隐藏”,我看到一些开发人员使用它来隐藏错误,因为他们缺乏创建有问题或具有挑战性的代码的技能,特别是不遵循良好实践的代码。
标签: c# .net try-catch-finally