Язык программирования C#9 и платформа .NET5. Страница 160
CauseOfError = cause; ErrorTimeStamp = time; }}Затем необходимо модифицировать метод
Accelerate()throw new CarIsDeadException("You have a lead foot", DateTime.Now,$"{PetName} has overheated!"){ HelpLink = "http://www.CarsRUs.com",};Поскольку создаваемые специальные исключения, следующие установившейся практике в .NET Core, на самом деле отличаются только своими именами, полезно знать, что среды Visual Studio и Visual Studio Code предлагает фрагмент кода, который автоматически генерирует новый класс исключения, отвечающий рекомендациям .NET. Для его активизации наберите
ехсОбработка множества исключений
В своей простейшей форме блок
trycatchtryProcessMultipleExpceptionsCar.csRadio.csCarIsDeadException.csCustomExceptionЗатем модифицируйте метод
Accelerate()CarArgumentOutOfRangeExceptionstring// Перед продолжением проверить аргумент на предмет допустимости.public void Accelerate(int delta){ if (delta < 0) { throw new ArgumentOutOfRangeException(nameof(delta), "Speed must be greater than zero"); // Значение скорости должно быть больше нуля! } ...}На заметку! Операция
nameof()deltaТеперь логика в блоке
catchusing System;using System.IO;using ProcessMultipleExceptions;Console.WriteLine("***** Handling Multiple Exceptions *****\n");Car myCar = new Car("Rusty", 90);try{ // Вызвать исключение выхода за пределы диапазона аргумента. myCar.Accelerate(-10);}catch (CarIsDeadException e){ Console.WriteLine(e.Message);}catch (ArgumentOutOfRangeException e){ Console.WriteLine(e.Message);}Console.ReadLine();При написании множества блоков
catchcatchcatchcatchCarIsDeadExceptionArgumentOutOfRangeExceptionSystem.Exception// Этот код не скомпилируется!Console.WriteLine("***** Handling Multiple Exceptions *****\n");Car myCar = new Car("Rusty", 90);try{ // Вызвать исключение выхода за пределы диапазона аргумента. myCar.Accelerate(-10);}catch(Exception e){ // Обработать все остальные исключения? Console.WriteLine(e.Message);}catch (CarIsDeadException e){ Console.WriteLine(e.Message);}catch (ArgumentOutOfRangeException e){ Console.WriteLine(e.Message);}Console.ReadLine();
Перейти на страницу:
Изменить размер шрифта: