在C#中的方法链接中调用方法中的异常

时间:2017-02-17 07:14:37

标签: c# exception exception-handling

在最近的采访中,采访者在C#中问我以下问题。

假设我们有5种方法m1,m2,m3,m4,m5和m1调用m2,m2调用m3,依此类推。但是当m5中发生异常时我们必须捕获m4,当m4中发生异常时我们必须捕获m3,依此类推。首先,我认为这很简单,只需在所有方法中包含try-catch块,除了最后一个方法m5。但在几秒钟内,我明白这个解决方案是行不通的。

    public static void m1()
    {
        try
        {
            m2();
        }
        catch(Exception ex)
        {
            Console.WriteLine("From Catch m1");
        }
    }
    public static void m2()
    {
        try
        {
            m3();
        }
        catch (Exception ex)
        {
            Console.WriteLine("From Catch m2");
        }
    }
    public static void m3()
    {
        try
        {
            m4();
        }
        catch (Exception ex)
        {
            Console.WriteLine("From Catch m3");
        }
    }
    public static void m4()
    {
        try
        {
            m5();                
        }
        catch (Exception ex)
        {
            Console.WriteLine("From Catch m4");
        }
    }
    public static void m5()
    {
        int i = 0;
        Console.WriteLine(50 / i);
    }

我也试过很多方法,在网上搜索但找不到合适的解决方案。请建议正确的方法来执行此功能。

0 个答案:

没有答案