Пользовательские исключения


В С# имеется возможность обрабатывать исключения, создаваемые программистом.

Для этого достаточно определить класс как производный от класса Exception или от класса ApplicationException, "родоначальника" иерархии, зарезервированной для исключений, связанных с прикладными программами.

 

Пример 1.

 

class MyArrayException1 : ApplicationException

{

HelpLink = "Смотри файл Readme.txt";

Source = "Программа PGM1";

 

public MyArrayException1 (string Message) : base(Message)

{ }

}

 

Пример 2.

 

class MyArrayException2 : ApplicationException

{

// Реализуем стандартные конструкторы.

public MyArrayException2() : base() { }

public MyArrayException2 (string Message) : base(Message)

{ }

 

// Переопределяем метод ToString ()

public override string ToString()

{

return Message;

}

}

 

Пример 3.

 

class MyArrayException3 : ApplicationException

{

public MyArrayException3()

: base ("Выход за границу массива")

{ }

}

 

Третий пример практически ничего оригинального не вносит, поэтому вместо создания нового класса достаточно использовать существующий, например:

 

Exception myExc = new Exception ("Выход за границу массива");

throw myExc;

 

или

 

throw new Exception ("Выход за границу массива");

 

или

 

throw new IndexOutOfRangeException ("Выход за границу массива");

 

Перехват исключений производных классов

Если нужно перехватывать исключения и базового, и производного класса, поместите первой в 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);

}

}

}

}

 



Дата добавления: 2019-02-08; просмотров: 533;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.