C#: исключения

Spread the love

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

Вот некоторые базовые понятия и примеры использования исключений в C#:

1. Базовая структура обработки исключений:

“`csharp

try

{

100000R, 12%, 1 year

    // Код, который может вызвать исключение

}

catch (Exception ex)

{

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

}

finally

{

    // Код, выполняющийся в любом случае

}

“`

В блоке `try` размещается код, который может вызвать исключение. Если исключение происходит, выполнение программы переходит в блок `catch`, где можно обработать исключение или выполнить дополнительные действия. Блок `finally` используется для кода, который должен быть выполнен в любом случае, независимо от наличия исключения.

2. Генерация исключения:

“`csharp

throw new Exception(“Ошибка!”);

“`

Ключевое слово `throw` используется для генерации исключения. В примере выше генерируется исключение типа `Exception` с сообщением “Ошибка!”.

3. Обработка конкретных типов исключений:

“`csharp

try

{

    // Код, который может вызвать исключение

}

catch (ArgumentNullException ex)

{

    // Обработка исключения типа ArgumentNullException

}

catch (DivideByZeroException ex)

{

    // Обработка исключения типа DivideByZeroException

}

catch (Exception ex)

{

    // Обработка всех остальных исключений типа Exception

}

“`

Вы можете указывать различные блоки `catch` для обработки конкретных типов исключений. Блок `catch` с типом `Exception` обрабатывает все исключения, которые не были обработаны в предыдущих блоках `catch`.

4. Пользовательские исключения:

“`csharp

public class CustomException : Exception

{

    public CustomException(string message) : base(message)

    {

    }

}

“`

Вы также можете создавать свои собственные пользовательские исключения, наследуясь от базового класса `Exception`.

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

try/catch

В C#, блок `try/catch` используется для обработки исключений. Блок `try` содержит код, в котором может произойти исключение, а блок `catch` предназначен для перехвата и обработки исключения.

Вот пример использования блока `try/catch`:

“`csharp

try

{

    // Код, который может вызвать исключение

    int x = 10;

    int y = 0;

    int result = x / y;

    Console.WriteLine(“Результат: ” + result);

}

catch (DivideByZeroException ex)

{

    // Обработка исключения DivideByZeroException

    Console.WriteLine(“Ошибка деления на ноль: ” + ex.Message);

}

catch (Exception ex)

{

    // Обработка всех остальных исключений

    Console.WriteLine(“Произошла ошибка: ” + ex.Message);

}

finally

{

    // Код, выполняющийся в любом случае

    Console.WriteLine(“Блок finally”);

}

“`

В этом примере блок `try` содержит код, в котором выполняется деление `x` на `y`, что может вызвать исключение `DivideByZeroException`, так как деление на ноль недопустимо. Если исключение возникает в блоке `try`, то выполнение программы переходит в соответствующий блок `catch`, где можно обработать исключение.

В приведенном примере у нас есть два блока `catch`. Первый блок `catch` с типом `DivideByZeroException` перехватывает исключение, вызванное делением на ноль. Второй блок `catch` с типом `Exception` перехватывает все остальные исключения, которые не были обработаны в предыдущем блоке `catch`.

Кроме того, в примере есть блок `finally`, который содержит код, выполняющийся в любом случае, независимо от того, возникло исключение или нет.

Обработка исключений с помощью `try/catch` позволяет контролировать и реагировать на ошибки в программе, предоставляя возможность вывести информацию об ошибке, выполнить определенные действия для восстановления или завершить выполнение программы в контролируемой манере.

Кастомные исключения

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

Вот пример создания кастомного исключения в C#:

“`csharp

using System;

public class CustomException : Exception

{

    public CustomException(string message) : base(message)

    {

    }

}

public class Program

{

    public static void Main()

    {

        try

        {

            throw new CustomException(“Случилась кастомная ошибка!”);

        }

        catch (CustomException ex)

        {

            Console.WriteLine(“Обработка кастомного исключения: ” + ex.Message);

        }

        catch (Exception ex)

        {

            Console.WriteLine(“Обработка других исключений: ” + ex.Message);

        }

        Console.WriteLine(“Нажмите любую клавишу для выхода…”);

        Console.ReadKey();

    }

}

“`

В этом примере мы создали класс `CustomException`, который наследуется от базового класса `Exception`. Мы переопределили конструктор, чтобы передать пользовательское сообщение в базовый класс.

Затем, в методе `Main`, мы используем оператор `throw` для генерации исключения типа `CustomException`. Затем мы обрабатываем это исключение с помощью блока `catch (CustomException ex)`, который будет перехватывать только исключения типа `CustomException`.

Также, мы добавили блок `catch (Exception ex)`, который будет перехватывать все остальные исключения, не обработанные в предыдущем блоке `catch`.

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

Схема Исключения

Spread the love

Добавить комментарий