louis vuitton bag moncler jacka ugg boots mbt sko louis vuitton oslo moncler ugg www.steklo1.ru
   Поиск
 

Изучаем C Sharp (C#)

Программирование на C Sharp (C#) с нуля

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

Обработка исключений

Как правило программист в своем проекте не может предсказать все действия пользователя,
входные значения и многие другие параметры. А чем крупнее и серьезнее проект тем таких мест в приложении становится
все больше и больше, поэтому перед программистом встает задача отловить и по возможность обработать
все возможные ситуации неправильного выполнения код.
Любое действие которое не может быть выполнено по той или иной причине называется Exception (исключение).
Данное исключение и будем отлавливать.
Для этого в C# есть конструкция try .. catch
Рассмотрим небольшой пример



            int a = Convert.ToInt32(Console.ReadLine());
            int b = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(a / b);




В данном примере вводятся два числа, далее идет деление и вывод результата.
Все бы ничего, а что если пользователь введет во втором случае 0?
Ведь на ноль делить нельзя - будет выведено исключение





Возможно пользователь даже не сможет понять что произошло, давайте ему объясним, отловив исключение и выдав ошибку

Заключим критическую область в try, а в catch выведем ошибку



            try
            {
                int a = Convert.ToInt32(Console.ReadLine());
                int b = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine(a / b);
            }
            catch
            {
                Console.WriteLine("Ошибка: деление на ноль");
            }








Теперь как видите пользователю все видно.
Но часто так бывает что в критической секции могут возникнуть разные исключения и их надо по разному обработать
тогда нам надо как можно точнее описать секцию catch то есть для какого именно исключения она будет отрабатывать.
Для этого рядом с Catch пишим имя исключения.
Так как пользователь может ввести не только цифры но и буквы, то обработаем и это исключение.
оно будет происходить в момент конвертации string в int



            try
            {
                int a = Convert.ToInt32(Console.ReadLine());
                int b = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine(a / b);
            }
            catch (System.DivideByZeroException)
            {
                Console.WriteLine("Ошибка: деление на ноль");
            }
            catch (System.FormatException)
            {
                Console.WriteLine("Ошибка: Введите цифры");
            }




Теперь будут все исключения обрабатываться как надо.





Осталось только рассмотреть последний блок данной конструкции - блок finally
Он выполняется всегд: произошла ошибка в catch или нет.
Пример может быть следующим: вы открываете файл что то делаете и в любом случае произшла или нет ошибка вы должны закрыть файл
это можно как раз сделать в finally



            try
            {
               Открываем файл
            }
            catch 
            {
                Console.WriteLine("Ошибка: что то с файлом");
            }
            finally
            {
                Закрываем файл
            }



Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (4,25 - 4 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии

Комментирует veter 06.03.2011 22:00:04
а при попытке закрыть несуществующий файл тож отлавливать ошипку? ><

Комментирует Amidamar0 30.01.2012 18:51:15
нет наверное..



Практический обучающий видео-курс "Основы C#"

От профессионального
разработчика для начинающих
и опытных программистов!

Кликните, чтобы изучить
язык C# с нуля и научиться
писать программы под платформу .NET!