C#异常处理,使用哪个catch子句?

标签 c# exception-handling

<分区>

Possible Duplicate:
Catching specific vs. generic exceptions in c#

这是一个示例方法

private static void outputDictionaryContentsByDescending(Dictionary<string, int> list)
{
    try
    {
        //Outputs entire list in descending order
        foreach (KeyValuePair<string, int> pair in list.OrderByDescending(key => key.Value))
        {
            Console.WriteLine("{0}, {1}", pair.Key, pair.Value);
        }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message, "Error detected", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

我想知道除了 Exception 之外还可以使用什么异常子句,以及使用更具体的 catch 子句是否有优势。

编辑:好的,谢谢大家

最佳答案

在语句中捕获各种类型的异常将使您能够以不同的方式处理每种异常。

Exception 的一揽子规则可能对记录和重新抛出异常有用,但对于实际处理您可能能够从中恢复的异常并不是最好的。

try
{
    // open a file specified by the user
}
catch(FileNotFoundException ex)
{
    // notify user and re-prompt for file
}
catch(UnauthorizedAccessException ex)
{
    // inform user they don't have access, either re-prompt or close dialog
}
catch(Exception ex)
{
    Logger.LogException(ex);
    throw;
}

关于C#异常处理,使用哪个catch子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897872/

相关文章:

使用表达式的泛型类的 C# 加速方法调用

javascript - 数据不是来自 JsonResult Action 到 Javascript 脚本

java - java异常处理中的return语句

exception-handling - Swift Exceptions 异常处理

Scala延续和异常处理

c# - 如何在我的项目中包含可执行文件并在 .NET 中调用它

c# - AntiXSS JavaScriptEncode 获取 HTML 编码?

c# - 当 T 不同时,是否可以获取 List<T> 的项目数?

java - 链式异常的优点是什么

c# - EnterpriseLibrary 记录到数据库不起作用