books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

    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. Для его активизации наберите

ехс
и нажмите клавишу <ТаЬ> (в Visual Studio нажмите <Tab> два раза).

Обработка множества исключений

В своей простейшей форме блок

try
сопровождается единственным блоком
catch
. Однако в реальности часто приходится сталкиваться с ситуациями, когда операторы внутри блока
try
могут генерировать многочисленные исключения. Создайте новый проект консольного приложения на C# по имени
ProcessMultipleExpceptions
, скопируйте в него файлы
Car.cs
,
Radio.cs
и
CarIsDeadException.cs
из предыдущего проекта
CustomException
и надлежащим образом измените название пространства имен.

Затем модифицируйте метод

Accelerate()
класса
Car
так, чтобы он генерировал еще и предопределенное в библиотеках базовых классов исключение
ArgumentOutOfRangeException
, если передается недопустимый параметр (которым будет считаться любое значение меньше нуля). Обратите внимание, что конструктор этого класса исключения принимает имя проблемного аргумента в первом параметре типа
string
, за которым следует сообщение с описанием ошибки.

// Перед продолжением проверить аргумент на предмет допустимости.

public void Accelerate(int delta)

{

  if (delta &lt; 0)

  {

    throw new ArgumentOutOfRangeException(nameof(delta),

      &quot;Speed must be greater than zero&quot;);

    // Значение скорости должно быть больше нуля!

  }

  ...

}

На заметку! Операция

nameof()
возвращает строку, представляющую имя объекта, т.е. переменную
delta
в рассматриваемом примере. Такой прием позволяет безопасно ссылаться на объекты, методы и переменные С#, когда требуются их строковые версии.

Теперь логика в блоке

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

using System;

using System.IO;

using ProcessMultipleExceptions;

Console.WriteLine(&quot;***** Handling Multiple Exceptions *****n&quot;);

Car myCar = new Car(&quot;Rusty&quot;, 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(&quot;***** Handling Multiple Exceptions *****n&quot;);

Car myCar = new Car(&quot;Rusty&quot;, 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();

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


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

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*