Visual C# для чайников. Урок 8. Обработка исключений (try,catch,exception) |
Автор megabax | ||||
28.11.2011 г. | ||||
Visual C# для чайников. Урок 8. Обработка исключений (try,catch,exception)
Сегодня мы изучим обработку исключений. Исключение, или исключительные ситуации - это такие критические ошибки, при которых дальнейшая нормальная работа программы невозможна. Например, мы пытаемся открыть файл и что то прочитать из него. Но файл не открылся. Причин может быть множество - файл в монопольном режиме занят другим приложением, такого файла нет или произошел сбой операционной системы. А раз мы не открыли файл, то и что то прочитать из него не можем. Если будем пытаться - то произойдет сбой программы. Поэтому приложение должно обрабатывать подобные ситуации. Например, при попытке открыть файл, проверить, открылся ли он. Если да то нормально продолжать работу, если нет то выдать сообщение об ошибке и дальше по обстоятельствам, например, предложить пользователю выбрать другой файл. Но делать кучу ветвлений не всегда удобно. Поэтому в C# есть такая конструкция, как обработка исключений. Исключения бывают как пользовательские (сгенерированные пользователем), так и системные. И те и другие можно "перехватывать" и обрабатывать по своему. А можно просто позволить программе завершиться аварийно со страшно руганью - если исключения не обрабатывать. В C# существует множество типов исключения, пока мы рассмотрим только некоторые из них. Начнем с небольшого примера (опять же это будет пример консольного приложения):
Данная программа попросит нас ввести три числа x, y и z, а потом выдаст результат вычисления по формуле xy/z Что будет, если в качестве z мы введем 0? Программа у нас выдаст сообщение об ошибке, ясное и понятное: Если бы мы не обработали исключение деления на нуль вот таким вот образом:
то у нас бы произошло аварийно завершение программы со страшным ругательством: Но благодаря обработке исключения вместо этого у нас выполнился код после слова catch, который выдал удобочитаемое и понятное пользователю сообщение об ошибке. Разумеется, мы могли бы обработать исключение и каким то иным образом, например, запросить повторный ввод данных. После слова catch в скобках стоит класс исключительной ситуации. Например, если произошло деление на нуль то это класса DivideByZero. Данный обработчик исключения будет обрабатывать только ошибки деления на нуль. Другие ошибки он обрабатывать не будет. Например, если вы введете слишком большие числа для возведения в степень, то процедура M1 - завершиться аварийно и эту ошибку обработает уже другой обработчик, который находиться в функции M2
вот как будет выглядеть эффект обработки подобной ошибки:
Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями программного продукта "Microsoft Visual Studio 2010 Professional", авторское право на который принадлежит корпорации Microsoft..
(С) Шуравин Александр
|
||||
Последнее обновление ( 14.04.2014 г. ) |
« След. | Пред. » |
---|