Язык программирования C#9 и платформа .NET5. Страница 156
Member type: MethodMessage: Zippy has overheated!Source: SimpleExceptionСвойство StackTrace
Свойство
System.Exception.StackTracecatchcatch(Exception e){ ... Console.WriteLine("Stack: {0}", e.StackTrace);}Снова запустив программу, в окне консоли можно обнаружить следующие данные трассировки стека (естественно, номера строк и пути к файлам у вас могут отличаться):
Stack: at SimpleException.Car.Accelerate(Int32 delta)in [путь к файлу]\car.cs:line 57 at <Program>$.<Main>$(String[] args)in [путь к файлу]\Program.cs:line 20Значение типа
stringStackTracestringСвойство HelpLink
Хотя свойства
TargetSiteStackTraceSystem.ExceptionHelpLinkПо умолчанию значением свойства
HelpLinkCar.Accelerate()public void Accelerate(int delta){ if (_carIsDead) { Console.WriteLine("{0} is out of order...", PetName); } else { CurrentSpeed += delta; if (CurrentSpeed >= MaxSpeed) { CurrentSpeed = 0; _carIsDead = true; // Использовать ключевое слово throw для генерации. // исключения и возврата в вызывающий код throw new Exception($"{PetName} has overheated!") { HelpLink = "http://www.CarsRUs.com" }; } Console.WriteLine("=> CurrentSpeed = {0}", CurrentSpeed); }}Теперь можно обновить логику в блоке
catchHelpLinkcatch(Exception e){ ... Console.WriteLine("Help Link: {0}", e.HelpLink);}Свойство Data
Свойство
DataSystem.ExceptionDataIDictionarySystem.CollectionsSystem.CollectionsCar.Accelerate()public void Accelerate(int delta){ if (_carIsDead) { Console.WriteLine("{0} is out of order...", PetName); } else { CurrentSpeed += delta; if (CurrentSpeed >= MaxSpeed) { Console.WriteLine("{0} has overheated!", PetName); CurrentSpeed = 0; _carIsDead = true; // Использовать ключевое слово throw для генерации // исключения и возврата в вызывающий код. throw new Exception($"{PetName} has overheated!")
Перейти на страницу:
Изменить размер шрифта: