Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 78

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 72 73 74 75 76 77 < 78 > 79 80 81 82 83 84 .. 320 >> Следующая

HeipLink Это свойство возвращает URL файла справки с описанием
ошибки
Message Это свойство (только для чтения) возвращает текстовое
описание соответствующей ошибки. Само сообщение об ошибке устанавливается как параметр конструктора
,Source Возвращает имя объекта (или приложения), которое
сгенерировало ошибку
StackTrace Это свойство (только для чтения) возвращает
последовательность вызовов, которые привели к возникновению
ошибки
InnerException Это свойство может быть использовано для сохранения сведений
об ошибке между сериями исключений
Генерация исключения
Чтобы продемонстрировать использование System. Excepti on, мы обратимся к классу который уже использовался в этой главе, а точнее, к его методу Speedup (). Вот текущая реализация этого метода:
Il В настоящее время SpeedUpOuiMwr сообщения об ошибках прямо на системную консоль
public void SpeedUpCint delta)
{
II Если машины больше нет. сообщить об этой if(dead)
{
Console.WriteLinetpetNanie + " is out of order..,"};
Очевидная проблема всех этих приемов обработки ошибок заключается в том,
что все они — разные. Каждый прием привязан к конкретной технологии, конкретному языку или конкретному проекту. Чтобы наконец навести порядок во всем этом, .NET предлагает единую технику для обнаружения ошибок времени выполнения и передачи сообщений о них: это — структурированная обработка исключений (Structured Exception Handling, SEH).
Преимущества этого метода заключаются в том, что в распоряжение всех разработчиков предоставляется единый и хорошо продуманный подход к обработке ошибок, который к тому же является общим для всех языков .NET. Таким образом, разработчик, использующий С#, будет реализовывать обработку ошибок точно так же, как программист, использующий VB.NET или MC++, и все остальные разработчики, использующие платформу .NET. Разработчики также получают дополнительную возможность генерировать и перехватывать исключения между двоичными файлами, AppDomains (о них будет сказано — в главе 6) и компьютерами в независимом от языка стиле.
Для того чтобы понять, как применять исключения в С#, в первую очередь необходимо осознать, что исключения в С# — это объекты. Все системные и пользовательские исключения в С# производятся от класса System. Excepti on (который, в свою очередь, производится от класса System. Object). В табл. 3.1 представлен перечень наиболее интересных свойств класса Excepti on.
Таблица 3.1. Главные члены класса System.Exception Свойство Назначение
Обработка исключений 179
else // Еще жива, нежно увеличивать скорость (
currSpeed += delta;
if(currSpeed >= maxSpeed)
{
Consol е.WriteLine(petName + " has overheated.,."); dead = true;
)
else
Console. Wri teLmn^lturrSpeed = + currSpeed);
}
)
Для наших целей мы переделаем метод SpeedUp() таким образом, чтобы при попытке ускорить уже вышедший из строя автомобиль (dead = = true)генерировалось исключение. Прежде всего вам потребуется создать и настроить новый объект класса Exception (исключение). Для передачи этого объекта используется ключевое слово throw. Вот пример:
// При попытке ускорить вышедший из строя автонобиль будет сгенерировано исключение
public void SpeedUptint delta)
{
if (dead)
throw new Exception ("This car is already dead");
else (
)
!
Прежде чем выяснить, как вызвать это исключение, необходимо отметить еще несколько моментов.
Во-первых, при создании пользовательского класса только мы сами принимаем решения о том, когда будут возникать исключения. Здесь мы создали исключение таким образом, что оно будет сгенерировано всякий раз при применении метода SpeedUpu к машине в нерабочем состоянии (dead = = true), принудительно прекращая выполнение этого метода.
Конечно, вы можете изменить метод Speedlip(} таким образом, что он будет восстанавливаться автоматически, без генерации каких-либо исключений. Как правило, исключения должны генерироваться только тогда, когда выполнение какого-либо метода должно быть немедленно прервано. При проектировании класса одним из самых важных моментов является принятие решений о том, когда должны генерироваться исключения.
Во-вторых, необходимо помнить, что в библиотеках среды выполнения .NET уже определено множество готовых исключений, которые можно и нужно использовать. Например, в пространстве имен System определены такие важные исключения, как ArgumentOutOfRangeException, IndexOutOfRangeExcepti on, StackOverflowExcepti on и многие другие. В прочих пространствах имен определены свои исключения, относящиеся к тем областям, за которые отвечает соответствующее пространство имен. В пространстве имен System. Drawing. Printing определены исключения, которые могут возникнуть в процессе вывода на печать, в System. IQ — исключения ввода-вывода и т. п.
1800 Глава 3 • С# и объектно-ориентированное программирование
D!''?bharpHook .Ubs'.Chapter 3\EHceptions\hin\Dehiig\rKreptian... 61
Ci ' -К і .•''Mt ¦ Ci * -Speed -
Cl •1-UUCL-Il
Ci ••Kl reit Ci • -Speed = Curi-Spi-i-il -Ct - -Speed = пі і в і: in- і:, rtlre.uly
Предыдущая << 1 .. 72 73 74 75 76 77 < 78 > 79 80 81 82 83 84 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100