Свойства и методы класса Exception


Конструкторы (2 из 4):

 

1. Инициализирует новый экземпляр класса Exception.

 

public Exception();

 

2. Инициализирует новый экземпляр класса Exception с заданным сообщением об ошибке.

 

public Exception (string);

[C++] public: Exception(String*);

[JScript] public function Exception(String);

 

В классе Exception определен ряд свойств:

 

Message Содержит строку, которая описывает причину ошибки
StackTrace Содержит имя класса и метода, вызвавшего исключение
TargetSite Содержит имя метода, из которого было вызвано исключение
Source Содержит имя программы, вызвавшей ис­ключение
HelpLink Строка с любой дополнительной информацией

 

Методы:

Метод ToString() возвращает строку с описанием исключения.

 

Пример 1:

 

try

{

double d = double.Parse(Console.ReadLine());

}

catch (Exception e)

{

Console.WriteLine ("Полное описание: " + e); //вызов ToString

Console.WriteLine ("Сообщение об ошибке: " + e.Message);

Console.WriteLine ("Имя класса и метода: " + e.StackTrace);

Console.WriteLine ("Метод: " + e.TargetSite);

}

 

Пример 2:

 

public static void Main()

{

int[ ] а = new int[4];

 

try

{

for ( int i = 0; i < 10; i++)

а[i] = i;

}

 

catch (IndexOutOfRangeException)

{

Console.WriteLine ("Индекс вне диапазона!");

return;

}

}

 

Пример 3:

 

public static void Main()

{

try

{

Class1.Divide(a, b);

}

 

catch (DivideByZeroException)

{

Console.WriteLine("Делитель равен 0");

b = 1;

}

}

 

Пример 4.

 

public static void Main()

{

try

{

double c = double.Parse(Console.ReadLine());

}

 

catch (Exception e)

{

Console.WriteLine("Error: " + e.Message);

return;

}

}

 

Использование нескольких catch-блоков

С try-блоком можно связать не один, а несколько catch-блоков.

 

Однако все catch- блоки должны перехватывать исключения различного типа.

 

using System;

class Demo

{

public static void Main()

{

// Здесь массив a длиннее массива b.

int[] a = { 4, 8, 10, 32, 64, 128, 256, 512 };

int[] b = { 2, 0, 1, 4, 0, 8 };

 

 

for (int i = 0; i < a.Length; i++)

{

try

{

Console.WriteLine(a[i] + " / " + b[i] + " равно " + a[i] / b[i]);

}

 

catch (DivideByZeroException)

{

Console.WriteLine("Деление на ноль!");

}

 

catch (IndexOutOfRangeException)

{

Console.WriteLine("Выход за границы массива.");

return;

}

}

}

}

 

 

В общем случае catch-выражения проверяются в том порядке, в котором они встречаются в программе.

Выполняется только инструкция, тип исключения которой совпадает со сгенерированным исключением. Все остальные catch-блоки игнориру­ются.

 

catch-блок, предназначенный для "глобального перехвата" должен быть последним в последовательности catch-блоков.

 



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


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

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

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

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