Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 158
- Предыдущая
- 158/642
- Следующая
NullReferenceException nullRefEx = new NullReferenceException();
Console.WriteLine(
"NullReferenceException is-a SystemException? : {0}",
nullRefEx is SystemException);
Исключения уровня приложения (Systern.ApplicationException)
Поскольку все исключения .NET 5 являются типами классов, вы можете создавать собственные исключения, специфичные для приложения. Однако из-за того, что базовый класс
System.SystemException
System.Exception
System.ApplicationException
public class ApplicationException : Exception
{
// Разнообразные конструкторы.
}
Как и в
SystemException
ApplicationException
System.ApplicationException
System.ApplicationException
Построение специальных исключений, способ первый
Наряду с тем, что для сигнализации об ошибке во время выполнения можно всегда генерировать экземпляры
System.Exception
Например, предположим, что вы хотите построить специальное исключение (по имени
CarIsDeadException
System.Exception/System.ApplicationException
Exception
На заметку! Согласно правилу все специальные классы исключений должны быть определены как открытые (вспомните, что стандартным модификатором доступа для невложенных типов является
internal
Создайте новый проект консольного приложения по имени
CustomException
Car.cs
Radio.cs
Car
Radio
SimpleException
CustomException
Затем добавьте в проект новый файл по имени
CarIsDeadException.cs
using System;
namespace CustomException
{
// Это специальное исключение описывает детали условия
// выхода автомобиля из строя .
// (Не забывайте, что можно также просто расширить класс Exception.)
public class CarIsDeadException : ApplicationException
{
}
}
Как и с любым классом, вы можете создавать произвольное количество специальных членов, к которым можно обращаться внутри блока
catch
CarIsDeadException
Message
Вместо заполнения словаря данных (через свойство
Data
public class CarIsDeadException : ApplicationException
{
private string _messageDetails = String.Empty;
public DateTime ErrorTimeStamp {get; set;}
public string CauseOfError {get; set;}
public CarIsDeadException(){}
public CarIsDeadException(string message,
string cause, DateTime time)
{
_messageDetails = message;
CauseOfError = cause;
ErrorTimeStamp = time;
}
// Переопределить свойство Exception.Message.
public override string Message
=> $"Car Error Message: {_messageDetails}";
}
Здесь класс
CarIsDeadException
_messageDetails
Accelerate()
CarIsDeadException
System.Exception
// Сгенерировать специальное исключение CarIsDeadException.
public void Accelerate(int delta)
- Предыдущая
- 158/642
- Следующая