Под событием будем понимать автоматическое извещение о каком-либо действии среды программирования или пользователя. События являются членами класса и объявляются с использованием ключевого слова event. Реализация механизма событий в языке программирования C# основана на использовании делегатов.
Синтаксис:
event имя_делегата имя_обьекта;
Некоторые события могут активизировать несколько процедур обработки, в том числе определенных в других объектах. Такие события называются широковещательными. Реализация механизма широковещательных событий в языке программирования C# основана на использовании многоадресных делегатов.
Пример
// Объявление делегата, на основе которого
// будет определено событие.
delegate void MyEventHandler () ;
// Объявление класса, в котором
// инициируется событие.
class MyEvent
{
public event MyEventHandler activate;
// В этом методе инициируется событие.
public void fire()
{
if (activate != null) activate();
}
}
class X
{
public void Xhandler()
{
Console.WriteLine("Событие получено
объектом класса X.");
}
}
class Y
{
public void Yhandler()
{
Console.WriteLine("Событие получено
объектом класса Y.");
}
}
class EventDemo
{
static void handler()
{
Console.WriteLine("Событие получено
объектом класса EventDemo.")
}
public static void Main()
{
MyEvent evt = new MyEvent();
X xOb = new X();
Y yOb = new Y();
// Добавление методов handler (), XhandlerО
// и YhandlerO в цепочку обработчиков события.
evt.activate += new
MyEventHandler(handler);
evt.activate += new
MyEventHandler(xOb.Xhandler);
evt.activate += new
MyEventHandler(yOb.Yhandler);
evt.fire();
Console.WriteLine();
evt.activate -= new
MyEventHandler(xOb.Xhandler);
evt.fire();
}
}
Исключительная ситуация (или, короче, исключение) представляет собой ту или иную ошибку или отклонение от обычного сценария во время выполнения программы. С помощью подсистемы обработки исключений языка С# можно обрабатывать такие ошибки, не вызывая аварийного завершения программы.
Для обработки исключений в языке С# примененяются следующие ключевые слова: try, catch, throw, finally. Перечисленные ключевые слова образуют взаимосвязанную подсистему, в которой использование одного из ключевых слов влечет за собой использование других.
Обработка исключений в языке C# реализуется на основе операторных блоков try и catch.
Синтаксис:
try {
Блок_кода_для_которого_выполняется
мониторинг_ошибок}
catch (ExcepTypel ехОb)
{ Обработчик_исключений_ExcepTypel }
catch (ЕхсерТуре2 ехОb)
{Обработчик_исключений_ЕхсерТуре2 }
Основные системные исключения приведены в таблице 10.
catch должен соответствовать типу перехватываемого исключения. Неперехваченное исключение непременно приводит к досрочному прекращению выполнения программы.
| Исключение | Значение |
|---|---|
ArrayTypeMismatchException |
Тип сохраненного значения несовместим с |
DivideByZeroException |
Предпринята попытка деления на ноль |
IndexOutOfRangeException |
Индекс массива выходит за пределы диапазона |
InvalidCastException |
Некорректное преобразование в процессе выполнения |
OutOfMemoryException |
Вызов new был неудачным из-за недостатка памяти |
|
Переполнение при выполнении арифметической операции |
StackOverflowException |
Переполнение стека |
Для выполнения перехвата исключений вне зависимости от их типа (перехват всех исключений) возможно использование оператора catch без параметров.
Так как оператор catch не вызывается из программы, то после выполнения блока catch управление не передается обратно оператору программы, при выполнении которого возникло исключение. Выполнение программы продолжается с операторов, находящихся после блока catch.
С целью предотвращения этой ситуации возможно указание блока кода, который вызывается после выхода из блока try / catch, с помощью блока finally в конце последовательности try / catch.
Синтаксис:
try {
// Блок кода, выполняющий мониторинг ошибок
}
catch (ExcepTypel ех1) {
//1 Обработка исключения ExcepTypel.
}
catch (ЕхсерТуре2 ех2) {
// 2 Обработка исключения ЕхсерТуре2 .
finally {
// Код блока finally.
}
Блок finally будет вызываться независимо от того, появится исключение или нет, а также независимо от причин возникновения такового.
Исключения автоматически генерируются средой программирования. Однако исключение может быть и явно сгенерировано посредством оператора throw.
Синтаксис:
throw exceptOb;
Исключение, перехваченное одним оператором catch, может генерироваться повторно, и благодаря этому перехватываться внешним оператором catch. Для этого указывается ключевое слово throw без имени исключения.
Можно создавать заказные исключения, выполняющие обработку ошибок в пользовательском коде. Генерация исключений не представляет принципиальных сложностей, для этого требуется всего лишь определить класс, наследуемый из класса Exception. В качестве общего правила следует руководствоваться тем, что определенные пользователем исключения наследуются из класса ApplicationException, так как они представляют собой иерархию зарезервированных исключений, связанных с приложениями. Наследуемые классы не нуждаются в фактической реализации в каком-либо виде, поскольку сам факт их существования в системе типов данных позволяет воспользоваться ими в качестве исключений.
Создаваемые пользователем классы исключений автоматически получают доступные для них свойства и методы, определенные в классе Exception.
Реализовать обработку ошибок для лабораторной работы №9, при этом переопределив с помощью наследования событие:
StackOverflowExceptionArrayTypeMismatchExceptionDivideByZeroExceptionIndexOutOfRangeExceptionInvalidCastExceptionOutOfMemoryExceptionOverflowExceptionПод событием будем понимать автоматическое извещение о каком-либо действии среды программирования или пользователя. События являются членами класса и объявляются с использованием ключевого слова event. Реализация механизма событий в языке программирования C# основана на использовании делегатов.
Синтаксис:
event имя_делегата имя_обьекта;
Некоторые события могут активизировать несколько процедур обработки, в том числе определенных в других объектах. Такие события называются широковещательными. Реализация механизма широковещательных событий в языке программирования C# основана на использовании многоадресных делегатов.
Пример
// Объявление делегата, на основе которого
// будет определено событие.
delegate void MyEventHandler () ;
// Объявление класса, в котором
// инициируется событие.
class MyEvent
{
public event MyEventHandler activate;
// В этом методе инициируется событие.
public void fire()
{
if (activate != null) activate();
}
}
class X
{
public void Xhandler()
{
Console.WriteLine("Событие получено
объектом класса X.");
}
}
class Y
{
public void Yhandler()
{
Console.WriteLine("Событие получено
объектом класса Y.");
}
}
class EventDemo
{
static void handler()
{
Console.WriteLine("Событие получено
объектом класса EventDemo.")
}
public static void Main()
{
MyEvent evt = new MyEvent();
X xOb = new X();
Y yOb = new Y();
// Добавление методов handler (), XhandlerО
// и YhandlerO в цепочку обработчиков события.
evt.activate += new
MyEventHandler(handler);
evt.activate += new
MyEventHandler(xOb.Xhandler);
evt.activate += new
MyEventHandler(yOb.Yhandler);
evt.fire();
Console.WriteLine();
evt.activate -= new
MyEventHandler(xOb.Xhandler);
evt.fire();
}
}
Исключительная ситуация (или, короче, исключение) представляет собой ту или иную ошибку или отклонение от обычного сценария во время выполнения программы. С помощью подсистемы обработки исключений языка С# можно обрабатывать такие ошибки, не вызывая аварийного завершения программы.
Для обработки исключений в языке С# примененяются следующие ключевые слова: try, catch, throw, finally. Перечисленные ключевые слова образуют взаимосвязанную подсистему, в которой использование одного из ключевых слов влечет за собой использование других.
Обработка исключений в языке C# реализуется на основе операторных блоков try и catch.
Синтаксис:
try {
Блок_кода_для_которого_выполняется
мониторинг_ошибок}
catch (ExcepTypel ехОb)
{ Обработчик_исключений_ExcepTypel }
catch (ЕхсерТуре2 ехОb)
{Обработчик_исключений_ЕхсерТуре2 }
Основные системные исключения приведены в таблице 10.
catch должен соответствовать типу перехватываемого исключения. Неперехваченное исключение непременно приводит к досрочному прекращению выполнения программы.
| Исключение | Значение |
|---|---|
ArrayTypeMismatchException |
Тип сохраненного значения несовместим с |
DivideByZeroException |
Предпринята попытка деления на ноль |
IndexOutOfRangeException |
Индекс массива выходит за пределы диапазона |
InvalidCastException |
Некорректное преобразование в процессе выполнения |
OutOfMemoryException |
Вызов new был неудачным из-за недостатка памяти |
|
Переполнение при выполнении арифметической операции |
StackOverflowException |
Переполнение стека |
Для выполнения перехвата исключений вне зависимости от их типа (перехват всех исключений) возможно использование оператора catch без параметров.
Так как оператор catch не вызывается из программы, то после выполнения блока catch управление не передается обратно оператору программы, при выполнении которого возникло исключение. Выполнение программы продолжается с операторов, находящихся после блока catch.
С целью предотвращения этой ситуации возможно указание блока кода, который вызывается после выхода из блока try / catch, с помощью блока finally в конце последовательности try / catch.
Синтаксис:
try {
// Блок кода, выполняющий мониторинг ошибок
}
catch (ExcepTypel ех1) {
//1 Обработка исключения ExcepTypel.
}
catch (ЕхсерТуре2 ех2) {
// 2 Обработка исключения ЕхсерТуре2 .
finally {
// Код блока finally.
}
Блок finally будет вызываться независимо от того, появится исключение или нет, а также независимо от причин возникновения такового.
Исключения автоматически генерируются средой программирования. Однако исключение может быть и явно сгенерировано посредством оператора throw.
Синтаксис:
throw exceptOb;
Исключение, перехваченное одним оператором catch, может генерироваться повторно, и благодаря этому перехватываться внешним оператором catch. Для этого указывается ключевое слово throw без имени исключения.
Можно создавать заказные исключения, выполняющие обработку ошибок в пользовательском коде. Генерация исключений не представляет принципиальных сложностей, для этого требуется всего лишь определить класс, наследуемый из класса Exception. В качестве общего правила следует руководствоваться тем, что определенные пользователем исключения наследуются из класса ApplicationException, так как они представляют собой иерархию зарезервированных исключений, связанных с приложениями. Наследуемые классы не нуждаются в фактической реализации в каком-либо виде, поскольку сам факт их существования в системе типов данных позволяет воспользоваться ими в качестве исключений.
Создаваемые пользователем классы исключений автоматически получают доступные для них свойства и методы, определенные в классе Exception.
Реализовать обработку ошибок для лабораторной работы №9, при этом переопределив с помощью наследования событие:
StackOverflowExceptionArrayTypeMismatchExceptionDivideByZeroExceptionIndexOutOfRangeExceptionInvalidCastExceptionOutOfMemoryExceptionOverflowExceptionДля получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.