我以前从未需要捕获多个例外。但这是我的情景。我想“尝试”复制文件。如果目的地不存在,我不想被它打扰。但是我仍然希望捕获任何其他类型的异常。例如,UnauthorizedAccessException。以下是我尝试过的两件事,但我已经看到了网上使用的两个例子。是一个比另一个更好的编码。或者我两个都完全错了?感谢。
catch (DirectoryNotFoundException)
{
// Do Nothing
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
或
catch (Exception ex)
{
if (ex is DirectoryNotFoundException)
{
// Do nothing
return;
}
else
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:5)
恕我直言,拥有多个catch会降低代码可读性。所以这就是我想提出的建议。
if (Directory.Exists(dirPath))
{
try
{
File.Copy(sourceFile, destFile);
}
catch (Exception msg)
{
//Handle Exception.
}
}
答案 1 :(得分:4)
第一种选择是更好的形式,但实际上它们都同样有效。
使用第一个,它可以提供更清晰的代码
答案 2 :(得分:3)
一条建议:从不捕获您不打算处理的异常:
catch (DirectoryNotFoundException)
{
// Do Nothing
}
就你的问题而言,我更喜欢第一种方法(假设你当然知道如何处理你所捕获的每一个例外)。
答案 3 :(得分:3)
我会选择第一个,原因有三个:
ex is DirectorNotFoundException
语句的开销。请确保按正确顺序捕获例外情况。