Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 160
- Предыдущая
- 160/642
- Следующая
Изменить размер шрифта:
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. Для его активизации наберите
ехс
Обработка множества исключений
В своей простейшей форме блок
try
catch
try
ProcessMultipleExpceptions
Car.cs
Radio.cs
CarIsDeadException.cs
CustomException
Затем модифицируйте метод
Accelerate()
Car
ArgumentOutOfRangeException
string
// Перед продолжением проверить аргумент на предмет допустимости.
public void Accelerate(int delta)
{
if (delta < 0)
{
throw new ArgumentOutOfRangeException(nameof(delta),
"Speed must be greater than zero");
// Значение скорости должно быть больше нуля!
}
...
}
На заметку! Операция
nameof()
delta
Теперь логика в блоке
catch
using 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();
При написании множества блоков
catch
catch
catch
catch
CarIsDeadException
ArgumentOutOfRangeException
System.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();
160
- Предыдущая
- 160/642
- Следующая
Перейти на страницу: