首页 > 解决方案 > 具体异常处理

问题描述

MyException1在这种情况下,是否有任何理由使用特定的 expetion 课程MyException2

public static void Main()
{
    try
    {
        TestMethod();
    }
    catch(Exception ex)
    {
        Console.Writeline(ex);
    }
}

private static void TestMethod()
{
    // This method can throw Exception1 and Exception2
}

public class MyException1 : Exception {}
public class MyException2 : Exception {}

我知道,当我们为每种异常类型设置多个 catch 块时,这是有意义的。但在这种情况下MyException1MyException2空的都是相似的。这些抛出的异常将被转换为 Main 方法中的 Exception 类。也许最好不要用这种处理方式创建两个类似的异常类?

标签: c#

解决方案


块背后的概念catch是您处理异常。如果某种类型的异常需要某种类型的处理,那么当该异常有自己的类时会很有帮助,这样它就可以有自己的catch块。

例如,如果致命MyException1时可以安全吞咽,您可以这样写:MyException2

    try
    {
        DoSomethingHard();
    }
    catch (MyException1 exception1)
    {
        _log.Write("Warning: small exception, no worries. {0}", exception1.Message);
        continue;
    }
    catch (MyException2 exception2)
    {
        _log.Write("Fatal: big exception, gotta bail out now. {0}", exception2.Message);
        break;
    }    

推荐阅读