Найти в Дзене
Кодовые Мемуары

Монахи Шаолиня на службе в IT: Искусство войны с исключениями в C#

Оглавление

Предисловие

Статья входит в подборку: C# Advanced Pack: Продвинутый уровень

Удобная навигация по подборке: тык

Введение

Привет, дружище! Сегодня мы продолжаем изучение C# и эта первая статья из нашей замечательной подборки C# Advanced Pack: Продвинутый уровень.

Сегодня мы будем разбирать исключения и ошибки, может быть даже научимся с ними работать, как пойдет, поехали!

Как не прострелить себе колено?

Исключения (на языке монахов - Exceptions), в целом, - это своего рода сигналы о том, что что-то пошло не так в твоей программе. Это может быть всё что угодно: неверные данные, проблемы с подключением к базе данных, закончилась память и так далее. Короче говоря, это когда программа говорит: "Ой, да ну тебя на три прекрасных!".

Соответственно, нам нужна контрмера этим словам. Благо, в C# у нас есть других три прекрасных, только уже не букв, а слов: try, catch, finally.

Познаем искусство Шаолиня

Try

Сначала идет блок try. Здесь ты как бы говоришь программе: "Слушай, давай попробуем выполнить эти операции, но будь на чеку, могут быть проблемы". И если вдруг что-то идет не так, программа не паникует, а спокойно переходит к следующему блоку - catch.

Catch

Блок catch - это твой ловец снов исключений. Здесь ты определяешь, что делать, если в блоке try что-то пошло не по плану. Можно даже устроить несколько разных catch для разных видов исключений, как варианты запасных выходов в случае пожара. Самое базовое исключение носит имя Exception, оно может отловить любое исключение, которое возникло в твоей программулине.

Finally

Ну и напоследок идет блок finally. Этот блок выполнится в любом случае*, было исключение или нет. Вне зависимости от того, поймал ли ты исключение либо не поймал и все пошло по твоему плану, - этот блок выполнится.

* - finally выполняется в любом случае, кроме одного - аварийное завершение твоей программы или смерть твоей пекарни.

Пример использования

-2

Примечание: Блоки finally и catch являются необязательными, но хотя бы один из них должен обязательно присутствовать после блока try.

Какие виды исключений бывают?

В C# видов исключений вагон и маленькая тележка, но не переживай, мы не будем углубляться в каждое, а просто пробежимся по самым основным.

  1. Exception - отец всех исключений. Все остальные исключения в C# являются его детками и наследуются от него. Может поймать любой вид ошибки.
  2. SystemException - исключение, которые бросает сама система при различных неполадках.
  3. ArgumentException - исключение, связанное с аргументом/аргументами методов. Если ты передал что-то не то, что ожидалось, бац – и ты словил ArgumentException.
  4. IndexOutOfRangeException - поймаешь этого гада, когда ты пытаешься обратиться к элементу массива, которого нет. Как если бы ты попытался взять 8-й блин, когда стопка состоит из 7 блинов.
  5. NullReferenceException - очень распространенное исключение. Происходит, когда ты пытаешься работать с чем-то, что равно null. Ну, типа как пытаться пить чай из пустой чашки.
  6. InvalidCastException - словишь, когда ты пытаешься преобразовать объект в тип, в который его преобразовать нельзя. Превратить кошку в собаку не получится.
  7. IOException - исключение с вводом-выводом: проблемы с файлами, дисками и так далее.
  8. DivideByZeroException - исключение происходит, когда ты пытаешься поделить что-то на ноль. Неверная арифметическая операция и приложению капут.

Это были самые базовые исключения, которые будут встречаться тебе достаточно часто, с остальными познакомиться успеешь самостоятельно, обещаю - это весело!

Практические задачки

  1. Напиши код, который пытается делить число на ноль и обработай это исключение.
  2. Напиши программу, которая запрашивает у пользователя ввод числа и обрабатывает исключение, если введено не число.
  3. Придумай ситуацию, где бы тебе пригодился блок finally, и реализуй ее в коде.

Заключение

Вот мы и разобрались с нашей ответочкой на непредвиденные ошибки и обстоятельства в наших программах. Если у тебя будут вопросы - стучись, не стесняйся. Тут мы все друзья! А в следующей статье мы познакомимся с методами и их параметрами.

Ставь ❤️ и подписывайся на канал, до новых встреч!

Поддержать автора:

Донат для Кодовые Мемуары | donate.stream