方法重载适用于异常类型吗?

时间:2018-10-13 02:34:23

标签: c# exception overloading

using System;

// Custom Exception types
class AException : Exception
{
}

class BException : Exception
{
}

class Test
{
    public static void Main(string[] args)
    {
        try
        {
            throw new AException();
        }
        catch (Exception ex)
        {
            Callme(ex);
        }
    }
    public static void Callme(AException aexception) {}
    public static void Callme(BException bexception) {}
    public static void Callme(Exception ex) {}
}

Callme(ex)将始终调用Callme(Exception ex)而不是Callme(AException ..) ..这是预期的行为。我读过方法重载解析确实可以处理继承关系。

1 个答案:

答案 0 :(得分:2)

有一种更可接受的方法。尝试以下操作:

        try
        {
            throw new AException();
        }
        catch (AException aex)
        {
            Callme(aex);
        }
        catch (BException bex)
        {
            Callme(bex);
        }
        catch (Exception ex)
        {
            Callme(ex);
        }