Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Спецификации исключений
В прототип функции можна добавить спецификацию исключений, что бы явно указать, какие исключения она может генерировать 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, более специфические должны быть первыми.
|