Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.

Презентация:



Advertisements
Похожие презентации
Исключительные ситуации. Схема обработки исключений Try { //охраняемый блок trow (new MyException();) } catch(MyExeption e) { … } catch(Exeption e){ …
Advertisements

События События Важная роль делегатов заключается в том, что на них основана модель событий С#. Применение событий вовсе не ограничено приложениями с графическим.
Saint Petersburg, 2011 Java Lecture #06 Exceptions.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Исключения в Java. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение выбрасывается (throw),
Часть 1. Основы ООП Исключения.. Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – обработка ошибок страниц и приложения, Global.aspx.
1 Обработка исключений в Java Одно из важнейших преимуществ Java – разработанный на уровне языка механизм обработки исключений. Исключение в Java - это.
Пользовательские действия (custom actions) в JSP. JSTL.
Обработка исключительных ситуаций. Синтаксис try{ операторы0; } catch (ТипИсключения1 переменная1){ операторы1; } catch (ТипИсключения2 переменная2){
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Объектный доступ к Cache из среды.NET Александр Харитонов, InterSystems.
В С# предусмотрены средства для создания пользовательских классов-контейнеров, к внутренним элементам которых можно обращаться при помощи того же оператора.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Кафедра ОСУ, Java 2004 Обработка исключений В Java обработка исключительных ситуаций (exception handling) происходит следующим образом: Либо.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Обработка исключительных ситуаций Андрей Дмитриев 2008.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Транксрипт:

Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.

Что было? Собственная логика выявления для каждого приложения. Субъективный подход программиста (или группы разработчиков) к проблеме обработки исключений. Нет единого стандарта (разные методики и встроенные средства в Win32 API, COM, MFC)… Привязка методики к конкретному языку, алгоритму, проекту.

Вуаля - Structured Exception Handling В.NET было приято навести порядок буквально во всём. Единый и хорошо продуманный подход к обработке ошибок. Единый подход для всех языков.NET. Бонус – генерация и перехват исключений между двоичными файлами, AppDomains и компьютерами в независимом от языка стиле. Как – RFTM.

System.Exception. Основные свойства. HelpLink – URL файла справки с описанием ошибки. Message – текстовое описание ошибки (Read Only). Source – Имя объекта (или приложения), сгенерировавшего ошибку. StackTrace – Последовательность вызовов, которые привели к ошибке (Read Only). Inner exception – Используется для сохранения сведений об ошибке между сериями исключений.

Как и когда использовать. Исключения используются тогда, когда выполнение метода должно быть немедленно прервано. При проектировании класса необходимо определиться, где и как будут использоваться исключения. В.NET уже определены различные стандартные исключения (ArgumentOutOfRangeException, IndexOutOfRangeException, StackOverflowException и др).

Пришёл, проник и обезвредил… public static int Main (string[] args) { MyObject a = new MeObject(); try { a.DoSmthUnreal(); if (a.IsDead()) { throw new Exception(Your object is dead!); } catch(Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } «Просто catch» будет обрабатывать вообще все сгенерированные исключения.

Хотим свой класс для обработки исключений. public class MyObjectIsDead : Exception { private string ObjName; public MyObjectIsDead() {} public MyObjectIsDead(string ObjName) { this.ObjName = ObjName; } public override string Message { get { string msg = base.Message; if (ObjName != null) { msg += ObjName; } return msg; } catch(MyObjectIsDead e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); }

Можно проще! public class MyObjectIsDead : Exception { public MyObjectIsDead() {} public MyObjectIsDead(string message) : base(message) {} public MyObjectIsDead(string message, Exception innerEx) : base(message, innerEx) {} }

Что ещё… Обработка нескольких исключений – просто несколько блоков catch. Необязательный блок finally после try/catch – будет выполнен независимо от того, сработало ли исключение (освобождение ресурсов, отключение от БД…). Не допускать не отловленных исключений (если нет желания вести неприятные диалоги с отладчиком)!! Не допускать бесконечных исключений (не помещать генерацию того же исключения в catch)!! Всегда чётко продумывать, что нужно делать с отловленным исключением. Не использовать исключения без острой необходимости. RFTM (2й семестр)…