Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Создание пользовательских исключений, три!
Создание пользовательских исключений, три!
Если вы хотите построить "педантично точный" пользовательский класс исключения, то созданный вами тип должен соответствовать лучшим образцам, использующим исключения .NET. В частности, ваше пользовательское исключение должно подчиняться следующим требованиям:
• быть производным от Exception/ApplicationException;
• обозначаться атрибутом [System.Serializable];
• определять конструктор, используемый по умолчанию;
• определять конструктор, устанавливающий наследуемое свойство Message;
• определять конструктор, обрабатывающий "внутренние исключения";
• определять конструктор, выполняющий сериализацию типа.
Пока что глубина ваших знаний .NET не позволяет вам понять роль атрибутов и сериализации объектов, но сейчас это и не важно. Соответствующие вопросы будут рассмотрены позже. А в завершение обзора, посвященного вопросам создания пользовательских исключений, рассмотрите заключительный вариант CarIsDeadException.
[Serializable]
public class CarIsDeadException: ApplicationException {
public CarIsDeadException() {}
public CarIsDeadException(string message): base (message) {}
public CarIsDeadException(string message, System.Exception inner): base (message, inner) {}
protected CarIsDeadException(System.Runtime.Serialization.SerializationInfо info, System.Runtime.Serialization.StreamingContext context) : base(info, context) {}
}
Пользовательские исключения, соответствующие лучшим образцам программного кода .NET, на самом деле будут отличаться только именами, поэтому вам будет приятно узнать, что в Visual Studio 2005 предлагается шаблон программного кода под названием "Exception" (рис. 6.5), с помощью которого автоматически генерируется новый класс исключения в соответствии с лучшими рекомендациями .NET (шаблоны программного кода обсуждаются в главе 2).
- Удаление триггеров
- 9.4.1. Реализация графа в виде матрицы смежности
- Игровая индустрия
- Создание файлов с блокировкой
- Файлы *.GDB изнутри
- Создание свободно позиционируемых элементов
- Расширенные возможности указания пользовательских планов
- Увеличение глубины рекурсии процедур и триггеров
- Использование сервера Yaffil внутри процесса
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Дистрибутив
- Создание объектов Collection