Перейти к содержимому
На этой странице

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

Все темы С# Developer

Что такое Exception?

Исключение — это любое состояние ошибки или непредвиденное поведение, возникающее при выполнении программы. В .NET исключение — это объект, наследуемый от класса System.Exception. Исключение создается из области кода, где произошла проблема. Оно передаётся вверх по стеку до тех пор, пока его не обработает приложение либо программа не завершится.


Для чего служат try, catch, finally? В каком случае может не выполниться блок finally?

Конструкция try...catch...finally предназначена для обработки исключений. При использовании блока try...catch...finally происходит следующее:

  1. Выполнение блока try:

    • Все инструкции в блоке try выполняются.
  2. Блок try завершен без исключений:

    • Если в блоке try не возникло исключений, то после его выполнения начинает выполняться блок finally.
  3. Исключение в блоке try:

    • Если в блоке try возникает исключение, то обычный порядок выполнения останавливается, и среда CLR начинает искать блок catch, который может обработать данное исключение.
  4. Обработка исключения блоком catch:

    • Если нужный блок catch найден, то он выполняется, и после его завершения выполняется блок finally.
  5. Исключение не обработано:

    • Если нужный блок catch не найден, то при возникновении исключения программа аварийно завершает свое выполнение.

Пример:

try {
    // Код, который может вызвать исключение
}
catch (Exception ex) {
    // Обработка исключения
}
finally {
    // Код, который выполняется всегда
}
  • try: Содержит код, который может вызвать исключение.

  • catch: Содержит код для обработки исключения.

  • finally выполняется при обычном выходе из try, включая return и раскрутку стека при исключении. Это не абсолютная гарантия: блок может не выполниться при Environment.FailFast, принудительном завершении процесса или если выполнение не выходит из try.


Что такое call stack? Какие ключевые слова вы знаете?

Стек вызовов хранит цепочку активных вызовов методов. Окно Call Stack отладчика показывает эту цепочку; это представление стека, а не его определение. Для работы с исключениями используются try, catch, finally и throw.

Собеседования: C#

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: C#-разработчик, .NET-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.