На заметку!
Те, кто пришел в .NET 5 из мира Java, должны помнить о том, что члены типа не прототипируются набором исключений, которые они могут генерировать (другими словами, платформа .NET Core не поддерживает проверяемые исключения). Лучше это или хуже, но вы не обязаны обрабатывать каждое исключение, генерируемое отдельно взятым членом.Поскольку метод Accelerate
try/catch. После перехвата объекта исключения можно обращаться к различным его членам и извлекать детальную информацию о проблеме.Дальнейшие действия с такими данными в значительной степени зависят от вас. Вы можете зафиксировать их в файле отчета, записать в журнал событий, отправить по электронной почте системному администратору или отобразить конечному пользователю сообщение о проблеме. Здесь мы просто выводим детали исключения в окно консоли:
// Обработка сгенерированного исключения.
Console.WriteLine("***** Simple Exception Example *****");
Console.WriteLine("=> Creating a car and stepping on it!");
Car myCar = new Car("Zippy", 20);
myCar.CrankTunes(true);
// Разогнаться до скорости, превышающей максимальный
// предел автомобиля, с целью выдачи исключения
try
{
for(int i = 0; i < 10; i++)
{
myCar. Accelerate(10);
}
}
catch(Exception e)
{
Console.WriteLine("\n*** Error! ***"); // ошибка
Console.WriteLine("Method: {0}", e.TargetSite); // метод
Console.WriteLine("Message: {0}", e.Message); // сообщение
Console.WriteLine("Source: {0}", e.Source); // источник
}
// Ошибка была обработана, выполнение продолжается со следующего оператора.
Console.WriteLine("\n***** Out of exception logic *****");
Console.ReadLine;
По существу блок try
catch. С другой стороны, если код внутри блока try исключение не сгенерировал, то блок catch полностью пропускается, и выполнение проходит обычным образом. Ниже представлен вывод, полученный в результате тестового запуска данной программы:***** Simple Exception Example *****
=> Creating a car and stepping on it!
Jamming...
=> CurrentSpeed = 30
=> CurrentSpeed = 40
=> CurrentSpeed = 50
=> CurrentSpeed = 60
=> CurrentSpeed = 70
=> CurrentSpeed = 80
=> CurrentSpeed = 90
=> CurrentSpeed = 100
*** Error! ***
Method: Void Accelerate(Int32)
Message: Zippy has overheated!
Source: SimpleException
***** Out of exception logic *****
Как видите, после обработки исключения приложение может продолжать свое функционирование с оператора, находящегося после блока catch
Выражение throw (нововведение в версии 7.0)
До выхода версии C# 7 ключевое слово throw
throw доступно также в виде выражения и может использоваться везде, где разрешены выражения.Конфигурирование состояния исключения
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT