Intern
124
questionbank
Что такое исключения в языке программирования C#?
Answer from AI
sobes.tech AI
Исключения в C# — это аномальные ситуации или ошибки, которые возникают во время выполнения программы и нарушают ее нормальный поток.
Они позволяют отделить код обработки ошибок от основного кода логики приложения и обеспечивают более структурированный подход к управлению ошибками.
Основные аспекты исключений в C#:
- Типы исключений: C# имеет иерархию стандартных классов исключений, наследующихся от базового класса
System.Exception. Например,System.NullReferenceException,System.DivideByZeroException,System.IO.FileNotFoundException. Можно создавать и собственные классы исключений. - Генерация исключений (throw): Исключение генерируется с помощью ключевого слова
throw. - Перехват исключений (try-catch): Блок
tryсодержит код, который может сгенерировать исключение. Блокcatchперехватывает определенный тип исключения и выполняет код для его обработки. - Завершающий блок (finally): Блок
finallyвыполняется всегда, независимо от того, было ли сгенерировано исключение или нет. Он часто используется для освобождения ресурсов. - Оператор using: Более удобный способ управления ресурсами, который гарантирует вызов метода
Dispose. Он аналогичен конструкцииtry-finallyдля объектов, реализующих интерфейсIDisposable. - Фильтры исключений: Позволяют добавить условие к блоку
catchдля более специфичной обработки исключений.
Пример использования:
public class Example
{
public void ProcessData(int denominator)
{
try
{
int result = 10 / denominator; // Может сгенерировать DivideByZeroException
Console.WriteLine($"Result: {result}");
}
catch (DivideByZeroException ex) // Перехватываем конкретное исключение
{
Console.WriteLine("Error: Cannot divide by zero.");
// Логирование исключения, если необходимо
// Console.WriteLine($"Exception details: {ex.Message}");
}
catch (Exception ex) // Перехватываем любое другое исключение
{
Console.WriteLine($"An unexpected error occurred: {ex.Message}");
}
finally // Этот блок выполнится всегда
{
Console.WriteLine("Processing finished.");
}
}
public void UsingExample()
{
// Пример использования using для автоматического вызова Dispose
using (StreamReader reader = new StreamReader("file.txt"))
{
string line = reader.ReadLine();
Console.WriteLine(line);
} // Здесь reader.Dispose() вызывается автоматически, даже если возникнет исключение
}
public void ThrowExample(int value)
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "Value must be non-negative."); // Генерация собственного исключения
}
// ... дальнейшая логика
}
}
Использование исключений помогает создавать более надежные, читаемые и поддерживаемые приложения, отделяя обработку ошибок от основной логики.