Язык программирования C#9 и платформа .NET5. Страница 157
{ HelpLink = "http://www.CarsRUs.com", Data = { {"TimeStamp",$"The car exploded at {DateTime.Now}"}, {"Cause","You have a lead foot."} } }; } Console.WriteLine("=> CurrentSpeed = {0}", CurrentSpeed); }}С целью успешного прохода по парам "ключ-значение" добавьте директиву
usingSystem.CollectionsDictionaryEntryusing System.Collections;Затем обновите логику в блоке
catchDatanullKeyValueDictionaryEntrycatch (Exception e){ ... Console.WriteLine("\n-> Custom Data:"); foreach (DictionaryEntry de in e.Data) { Console.WriteLine("-> {0}: {1}", de.Key, de.Value); }}Вот как теперь выглядит финальный вывод программы:
***** 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*** Error! ***Member name: Void Accelerate(Int32)Class defining member: SimpleException.CarMember type: MethodMessage: Zippy has overheated!Source: SimpleExceptionStack: at SimpleException.Car.Accelerate(Int32 delta) ... at SimpleException.Program.Main(String[] args) ...Help Link: http://www.CarsRUs.com-> Custom Data:-> TimeStamp: The car exploded at 3/15/2020 16:22:59-> Cause: You have a lead foot.***** Out of exception logic *****Свойство
DataExceptionDataТакой подход позволяет вызывающему коду перехватывать конкретный тип, производный от
ExceptionИсключения уровня системы (System.SystemException)
В библиотеках базовых классов .NET 5 определено много классов, которые в конечном итоге являются производными от
System.ExceptionНапример, в пространстве имен
SystemArgumentOutOfRangeExceptionIndexOutOfRangeExceptionStackOverflowExceptionSystem.Drawing.PrintingSystem.IOSystem.DataИсключения, которые генерируются самой платформой .NET 5, называются системными исключениями. Такие исключения в общем случае рассматриваются как неисправимые фатальные ошибки. Системные исключения унаследованы прямо от базового класса
System.SystemExceptionSystem.ExceptionSystem.Objectpublic class SystemException : Exception{ // Various constructors.}Учитывая, что тип
System.SystemExceptionSystem.SystemExceptionis// Верно! NullReferenceException является SystemException.
Перейти на страницу:
Изменить размер шрифта: