Mir-knigi.online
Книги онлайн читать бесплатно!
  • Главная
  • Жанры
  • ТОП книг
  • ТОП авторов
  • Контакты

Язык программирования C#9 и платформа .NET5

Часть 156 из 642 Информация о книге

Member type: Method

Message: Zippy has overheated!

Source: SimpleException

Свойство StackTrace

Свойство

System.Exception.StackTrace
позволяет идентифицировать последовательность вызовов, которая в результате привела к генерации исключения. Значение данного свойства никогда не устанавливается вручную — это делается автоматически во время создания объекта исключения. Чтобы удостовериться в сказанном, модифицируйте логику в блоке
catch
:

catch(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

Значение типа

string
, возвращаемое свойством
StackTrace
, отражает последовательность вызовов, которая привела к генерации данного исключения. Обратите внимание, что самый нижний номер строки в
string
указывает на место возникновения первого вызова в последовательности, а самый верхний — на место, где точно находится проблемный член. Очевидно, что такая информация очень полезна во время отладки или при ведении журнала для конкретного приложения, т.к. дает возможность отследить путь к источнику ошибки.

Свойство HelpLink

Хотя свойства

TargetSite
и
StackTrace
позволяют программистам выяснить, почему возникло конкретное исключение, информация подобного рода не особенно полезна для пользователей. Как уже было показано, с помощью свойства
System.Exception
. Message можно извлечь читабельную информацию и отобразить ее конечному пользователю. Вдобавок можно установить свойство
HelpLink
для указания на специальный URL или стандартный справочный файл, где приводятся более подробные сведения о проблеме.

По умолчанию значением свойства

HelpLink
является пустая строка. Обновите исключение с использованием инициализации объектов, чтобы предоставить более интересное значение. Ниже показан модифицированный код метода
Car.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);

  }

}

Теперь можно обновить логику в блоке

catch
для вывода на консоль информации из свойства
HelpLink
:

catch(Exception e)

{

  ...

  Console.WriteLine("Help Link: {0}", e.HelpLink);

}

Свойство Data

Свойство

Data
класса
System.Exception
позволяет заполнить объект исключения подходящей вспомогательной информацией (такой как отметка времени). Свойство
Data
возвращает объект, который реализует интерфейс по имени
IDictionary
, определенный в пространстве имен
System.Collections
. В главе 8 исследуется роль программирования на основе интерфейсов, а также рассматривается пространство имен
System.Collections
. В текущий момент важно понимать лишь то, что словарные коллекции позволяют создавать наборы значений, извлекаемых по ключу. Взгляните на очередное изменение метода
Car.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!")


Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело
  • Деловая литература
  • Детективы и триллеры
  • Детские
  • Детские книги
  • Документальная литература
  • Дом и дача
  • Дом и Семья
  • Жанр не определен
  • Зарубежная литература
  • Знания и навыки
  • История
  • Компьютеры и Интернет
  • Легкое чтение
  • Любовные романы
  • Научно-образовательная
  • Образование
  • Поэзия и драматургия
  • Приключения
  • Проза
  • Прочее
  • Психология и мотивация
  • Публицистика и периодические издания
  • Религия и духовность
  • Родителям
  • Серьезное чтение
  • Спорт, здоровье и красота
  • Справочная литература
  • Старинная литература
  • Техника
  • Фантастика и фентези
  • Фольклор
  • Хобби и досуг
  • Юмор
Mir-knigi.online

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • [email protected]
Информация
  • Карта сайта
© mir-knigi.online, 2026. | Вход