Обработка исключительных ситуаций — изящный способ устранения программных ошибок C#
|
Обработка исключительных ситуаций — изящный способ устранения программных ошибок C#, Обработка исключительных ситуаций в C# Устранение програмных ошибок в C#, Програмные ошибки в C#, C# Полное руководство Герберт Шилдт, Язык программирования C#, C# полное руководство
Одно из главных преимуществ обработки исключительных ситуаций заключается в том, что она позволяет вовремя отреагировать на ошибку в программе и затем продолжить ее выполнение. В качестве примера рассмотрим еще одну программу, в которой элементы одного массива делятся на элементы другого. Если при этом происходит деление на нуль, то генерируется исключение DivideByZeroException. Обработка подобной исключительной ситуации в этой программе заключается в том, что программа уведомляет об ошибке и затем продолжает свое выполнение. Таким образом, попытка деления на нуль не приведет к аварийному завершению программы из-за ошибки при ее выполнении. Вместо этого ошибка обрабатывается изящно, не прерывая выполнение программы.
// Изящно обработать исключительную ситуацию и // продолжить выполнение программы.
using System;
class ExcDemo3 { static void Main() { int [ ] numer = { 4, 8, 16, 32, 64, 128 }; int [ ] denom = {2, 0, 4, 4, 0, 8 };
for(int i=0; i < numer. Length; i++) { try { Console .WriteLine (numer [i] + " / " + denom [i] + " равно " + numer[i]/denom[i]); } catch (DivideByZeroException) { // Перехватить исключение. Console .WriteLine ("Делить на нуль нельзя!"); } } } }
Ниже приведен результат выполнения этой программы. 4 / 2 равно 2 Делить на нуль нельзя! 16 / 4 равно 4 32 / 4 равно 8 Делить на нуль нельзя! 128/8 равно 16 Из данного примера следует еще один важный вывод: как только исключение обработано, оно удаляется из системы. Поэтому в приведенной выше программе проверка ошибок в блоке try начинается сызнова на каждом шаге цикла for, при условии, что все предыдущие исключительные ситуации были обработаны. Это позволяет обрабатывать в программе повторяющиеся ошибки.
|