Перехват исключений производных классов
Если нужно перехватывать исключения и базового, и производного класса, поместите первой в catch-последовательности инструкцию с за- данием производного класса. В противном случае catch-инструкция с за- данием базового класса будет перехватывать все исключения производ- ных клаcсов.
// Инструкции перехвата исключений производных классов
// должны стоять перед инструкциями перехвата
// исключений базовых классов. using System;
class ExceptA : ApplicationException
{
public ExceptA() : base() { }
public ExceptA (string str) : base(str) { }
}
class ExceptB : ExceptA
{
public ExceptB() : base() { }
public ExceptB (string str) : base(str) { }
}
class OrderMatters
{
public static void Main()
{
for (int x = 0; x < 3; x++)
{
try
{
if (x == 0) throw new ExceptA (
"Исключение типа ExceptA."); else if (x == 1) throw new ExceptB (
" Исключение типа ExceptB."); else throw new Exception();
}
catch (ExceptB exc)
{
Console.WriteLine(exc);
}
catch (ExceptA exc)
{
Console.WriteLine(exc);
}
catch (Exception exc)
{
Console.WriteLine(exc);
}
}
}
}
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.