C#

Рекламный модуль
Что делать в свободное время? Здесь можно стрелялки онлайн бесплатно без регистрации взять

Понятие ошибки, исключения и обработки исключения

Неправильные данные или неправильное вычисления пользователя легко приводят к ошибке во время выполнения программа. Однако среда CLR .NET не понимает оши-:ок: она понимает только исключения. Например, если ошибка вызвана умножением двух чисел вместо их суммы, то про¬грамма продолжит функционировать, но результат окажется неправильным. Подобная : юшбка происходит, когда пользователь вводит неправильные данные для вычисления, ответ будет неправильным, но программа все еще сможет работать. Если программа С# столкнется с серьезной проблемой, не контролируемой пользо¬вателем, или с нарушением работы программы, среда CLR будет рассматривать это как отключение. В такой ситуации программа временно приостанавливается, чтобы позволить коду обработки исключений справиться с проблемой, не прибегая к аварийному завершению программы. (Некоторые могли бы сказать, что исключение не останав¬ливает всю программу, а только некий ее поток. Но эта техническая истина не столь существенна на настоящий момент.) Чтобы понять, как организация кода влияет на обработку исключений, давай¬те сравним приложение с иерархией большой корпорации. Корпорация имеет испол¬нительного директора (Chief Executive Officer — CEO), управляющих верхнего звена, управляющих среднего уровня и т.д. Руководство корпорации понимает, что для по¬лучения чего-нибудь дельного, они должны разработать план, а затем выполнить его. Исполнительный директор будет знать план в общих чертах, но сам, вероятно, не будет непосредственно участвовать в его выполнении. Компания организована так, чтобы управляющие низшего ранга и рабочие могли выполнять отдельные задачи, определен¬ные в плане. Другими словами, эти организационные модули осуществляют реализа¬цию плана. Аналогия с корпорацией хорошо подходит для разработки программного обеспече¬ния. Ваш код содержит два типа методов — организующих функциональные возмож¬ности программы и фактически реализующих их. Вы создаете организационный код. чтобы отделить каждую задачу. Работа каждой не воздействует на другую, и, таким об¬разом, код разделяется на модули. На заметку. Как ипри реорганизации корпорации, управляющий код регулярно реорганизуется, чтобы устранять ошибки и реализовать новые части функциональных возможностей. Например, вы могли бы реорганизовать код, чтобы сделать его более рациональным, а следовательно, работающим быстрее. Теперь внесем в нарисованную картину исключения, Я сказал бы, что ошибки про¬исходят тогда, когда что-нибудь пошло не согласно плану. В иерархии управления, если происходит ошибка, вовсе не обязательно сразу уведомлять об этом исполнительного директора. Например, если в бухгалтерии кончились скобки для степлера, то стоит ли беспокоить по этому поводу исполнительного директора? Достаточно уведомить об этом служащего по закупке офисного оборудования, не стоит сообщать об этой ошибке дс самого верха иерархии управления. Если произошел сбой на сборочной линии пред¬приятии, то об этом должно знать руководство среднего или даже верхнего звена. Не если бы один из заводов-изготовителей компании затопило во время наводнения, то исполнительный директор определенно должен был бы об этом знать. Информация с таких ошибках (исключение) передается по командной цепочке вверх настолько, на¬сколько нужно. Код реализации в вашем иерархическом коде несет ответственность за оповещение обо всех ошибках, а организационный код — ответственность за их исправление или передачу по иерархии вверх, следующему фрагменту кода, который, возможно, спра¬вится с проблемой. Фрагмент кода на более высоком уровне, в зависимости от серьез¬ности ошибки, должен либо устранить проблему, либо, в свою очередь, передать ее на рассмотрение коду на еще более высоком уровне. В остальной части этой главы мы рассмотрим различные способы работы с исклю¬чениями. Идея заключается в том, чтобы предоставить вам практические решения, ко¬торые вы сможете использовать, не вникая особенно глубоко в теоретические вопросы При работе с исключениями зачастую имеет смысл запускать приложение в отлад¬чике Visual C# Express, с этого и начнем.