Исключения (Exceptions) в C#

Исключения в C# представляют собой механизм обработки ошибок, который позволяет программе реагировать на непредвиденные ситуации, такие как деление на ноль, попытка доступа к несуществующему элементу массива или ошибки ввода-вывода.

Обработка исключений с использованием try-catch

Для обработки исключений используется конструкция try-catch, которая позволяет перехватывать и обрабатывать ошибки.

using System;

class Program
{
    static void Main()
    {
        try
        {
            int x = 10;
            int y = 0;
            int result = x / y;
        }
        catch (DivideByZeroException ex)
        {
            Console.WriteLine($"Ошибка: {ex.Message}");
        }
    }
}

Вывод:

Ошибка: Попытка деления на ноль.

Использование finally

Блок finally выполняется в любом случае, независимо от того, было ли исключение.

using System;

class Program
{
    static void Main()
    {
        try
        {
            Console.WriteLine("Открытие файла");
            throw new Exception("Ошибка при работе с файлом");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Исключение: {ex.Message}");
        }
        finally
        {
            Console.WriteLine("Закрытие файла");
        }
    }
}

Вывод:

Открытие файла
Исключение: Ошибка при работе с файлом
Закрытие файла

Генерация пользовательских исключений

Можно создавать собственные исключения, унаследовавшись от Exception.

using System;

class CustomException : Exception
{
    public CustomException(string message) : base(message) { }
}

class Program
{
    static void Main()
    {
        try
        {
            throw new CustomException("Это пользовательское исключение");
        }
        catch (CustomException ex)
        {
            Console.WriteLine($"Обнаружено исключение: {ex.Message}");
        }
    }
}

Вывод:

Обнаружено исключение: Это пользовательское исключение

Основные типы исключений в C#

  1. ArgumentException — передан недопустимый аргумент.
  2. NullReferenceException — обращение к объекту, равному null.
  3. IndexOutOfRangeException — выход за пределы массива.
  4. InvalidOperationException — вызов метода в недопустимом состоянии.
  5. IOException — ошибки ввода-вывода.

Исключения в C# помогают контролировать выполнение программы и предотвращать аварийное завершение работы при возникновении ошибок.