Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Спецификации исключений






В прототип функции можна добавить спецификацию исключений, что бы явно указать, какие исключения она может генерировать

Int g()throw(a, b, c){}

 

Особенности обработки исключений

В языке Delphi, механизм обработки исключений имеет ряд особенностей:

· Тип исключения всегда имеет предка TException

· Имеются синтаксические отличии операторов. Raise – аналог throw

· Основное отличие в том, что существуют два разных блока try: try…except и try…finally. Эти два оператора можно совместно использовать вкладывая друг в друга. Блок finally выполняется даже в том случае, если возникает ошибочная ситуация.

Особенности обработки исключительных ситуаций в C#

Все типы исключений в C# являются наследниками класса SystemException. У этого класса есть определенный свойства, которые заранее определены под исключение.

· Message

· StackTrace

· TargetSite

Все эти свойства доступны только для чтения

Свойство Message содержит символьную строку, описывающую

характер ошибки; свойство StackTrace — строку с вызовами стека, приведшими к

исключительной ситуации, а свойство TargetSite получает объект, обозначающий

метод, сгенерировавший исключение.

 

Операторы для обработки исключений в C#

Генерация исключения – оператор throw. При генерации исключения передается объект исключения, который чаще всего генерируется здесь же, с помощью оператора new, а также конструктора класса исключения.

If(…){

Throw new Exception(“text error”);

}

Перехват исключений – оператор catch.

Try

{

}

Catch(Exception exc)

{

Console.WriteLine(" Стандартное сообщение таково: ■ ");

Console.WriteLine(exc); // вызвать метод ToStringO

Console.WriteLine(" Свойство StackTrace: " + exc.StackTrace);

Console.WriteLine(" Свойство Message: " + exc.Message);

Console.WriteLine(" Свойство TargetSite: " + exc.TargetSite);

}

 

Использование свойства Data

Если программисту необходимо, в точке генерации исключения передать дополнительную информацию – рекомендуется использовать свойство Data

Eception exc = new Exception(“Перегрев”)

Exc.HelpLink – ресурс/сайт

Exc.Data.Add(“text”)

Exc.Data.Add(“text”)

Exc.Data.Add(“text”)

Exc.Data.Add(“text”)

//информация, которая описывает проблему и предоставляет информацию

Try{

}

Catch(Exception e)

{

Console.WriteLine(“ Данные”);

If(e.Data! =null)

{

Foreach(DictionaryEnty de in e.Data)

{

Console.writeline(“{0}: {1}”, de.key, de.Value);

}

}

}

После try, блоков catch может быть несколько. Важен порядок расположения блоков catch, более специфические должны быть первыми.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.