maestro7it_education

Форк
0

README.md

Урок 9. Обработка исключений в C#

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

Это важная часть разработки, которая помогает сделать программы более надёжными и устойчивыми к ошибкам.

Конструкция try, catch, finally

try: блок кода, в котором может возникнуть исключение.

catch: блок кода для обработки исключений, которые были выброшены в блоке try.

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

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

public class Program
{
public static void Main()
{
try
{
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers[5]); // Это вызовет исключение
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Ошибка: Индекс находится вне допустимого диапазона.");
Console.WriteLine($"Подробности: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine("Произошла ошибка.");
Console.WriteLine($"Подробности: {ex.Message}");
}
finally
{
Console.WriteLine("Этот блок выполняется всегда.");
}
}
}

Создание собственных исключений

Можно создавать собственные классы исключений, унаследовав их от базового класса Exception или одного из его подклассов.

Пример создания собственного исключения:

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

Использование собственного исключения:

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

Работа с исключениями и их обработка

1. Перехват нескольких типов исключений:

Можно использовать несколько блоков catch, чтобы перехватывать различные типы исключений по отдельности.

try
{
// Код, который может вызвать исключение
}
catch (FileNotFoundException ex)
{
Console.WriteLine("Файл не найден.");
}
catch (IOException ex)
{
Console.WriteLine("Ошибка ввода-вывода.");
}
catch (Exception ex)
{
Console.WriteLine("Произошла ошибка.");
}

2. Использование исключений для управления потоком выполнения:

Исключения не должны использоваться для управления нормальным потоком выполнения программы.

Они предназначены для обработки ошибок и непредвиденных ситуаций.

3. Создание цепочки исключений:

Можно создать цепочку исключений, передавая исходное исключение в конструктор нового исключения.

Это позволяет сохранить информацию о первоначальной ошибке.

try
{
// Код, который может вызвать исключение
}
catch (Exception ex)
{
throw new CustomException("Произошла ошибка в процессе выполнения.", ex);
}

4. Логирование исключений:

Важно логировать исключения для последующего анализа и отладки.

Можно использовать встроенные средства логирования или сторонние библиотеки.

Пример с использованием библиотеки NLog:

private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public class Program
{
public static void Main()
{
try
{
// Код, который может вызвать исключение
}
catch (Exception ex)
{
Logger.Error(ex, "Произошла ошибка.");
}
}
}

Автор: Дуплей Максим Игоревич

Дата: 07.09.2024

Версия: 1.0

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

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.