В приведенных выше примерах исключения только перехватывались, но никакой существенной обработке они не подвергались. Как пояснялось выше, в оператореcatchдопускается указывать тип
В классеExceptionопределяется ряд свойств. К числу самых интересных относятся три свойства:Message, StackTraceиTargetsite.Все эти свойства доступны только для чтения. СвойствоMessageсодержит символьную строку, описывающую характер ошибки; свойствоStackTrace— строку с вызовами стека, приведшими к исключительной ситуации, а свойствоТа г get Siteполучает объект, обозначающий метод, сгенерировавший исключение.
Кроме того, в классеExceptionопределяется ряд методов. Чаще всего приходится пользоваться методомToString , возвращающим символьную строку с описанием исключения. Этот метод автоматически вызывается, например, при отображении исключения с помощью методаWriteLine .
Применение всех трех упомянутых выше свойств и метода из класса Exception демонстрируется в приведенном ниже примере программы.
// Использовать члены класса Exception.
using System;
class ExcTest {
public static void GenException {
int[] nums = new int [4];
Console.WriteLine("До генерирования исключения.");
// Сгенерировать исключение в связи с выходом за границы массива, for(int i=0; i < 10; i++) {
nums[i] = i;
Console.WriteLine("nums[{0}]: {1}", i, nums[i]);
}
Console.WriteLine("He подлежит выводу");
}
}
class UseExcept {
static void Main { try {
ExcTest.GenException;
}
catch (IndexOutOfRangeException exc) {
Console.WriteLine("Стандартное сообщение таково: ");
Console.WriteLine(exc); // вызвать метод ToStringO Console.WriteLine("Свойство StackTrace: " + exc.StackTrace);
Console.WriteLine("Свойство Message: " + exc.Message);
Console.WriteLine("Свойство TargetSite: " + exc.TargetSite);
}
Console.WriteLine("После блока перехвата исключения.");
}
}
При выполнении этой программы получается следующий результат.
До генерирования исключения.
nums[0]: 0
nums[1]: 1 v
nums[2]: 2
nums[3]: 3
Стандартное сообщение таково: System.IndexOutOfRangeException: Индекс находился
вне границ массива.