Перегрузка метода работает с типами исключений? - PullRequest
0 голосов
/ 13 октября 2018
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 голосов
/ 13 октября 2018

есть более приемлемый способ сделать это.попробуйте следующее:

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