Пользовательские исключения
Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 29 из 66.
Custom exceptions позволяют создавать特定ные типы исключений для уникальных сценариев ошибок вашего приложения.
Чтобы создать пользовательское исключение, определите class, который наследуется от Exception. Наследование означает, что ваш новый class автоматически получает всё поведение родительского class, в данном случае Exception, позволяя вам добавлять или настраивать функциональность. Синтаксис class MyException : Exception означает, что MyException расширяет Exception.
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}: Exception: наследует от встроенного класса Exception.: base(...): вызывает конструктор родительского класса Exception, чтобы задать сообщение об ошибке.
Первый constructor предоставляет сообщение по умолчанию, если оно не указано.
Второй constructor принимает custom message, чтобы вызывающие могли подробно описать ошибку.
Теперь вы можете выбросить своё custom exception при необходимости:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Когда этот код выполняется с negative age, он выбрасывает ваше custom exception с message "Age cannot be negative."
Примечание: В упражнениях этого урока функции проверки возвращают true, когда входные данные valid, и выбрасывают custom exception, когда это не так. Поскольку необработанное exception немедленно останавливает выполнение, тестовым случаям нужно проверять только путь возврата true: само exception является наблюдаемым результатом для недопустимых входных данных.
Задание
СреднеСоздайте custom исключений class с именем InvalidTemperatureException, который наследует от Exception. В нём должны быть:
- конструктор Default, устанавливающий значение message "Temperature is not valid."
- конструктор, принимающий custom message.
Затем реализуйте метод с именем checkTemperature, который:
- принимает целочисленный параметр, представляющий температуру в градусах Цельсия;
- выбрасывает
InvalidTemperatureExceptionс message "Temperature below absolute zero!", если температура меньше -273; - возвращает true, если температура valid.
Попробуйте сами
using System;
class CheckTemperature
{
// Создайте здесь свой пользовательский класс исключения
public static bool checkTemperature(int celsius)
{
// Напишите здесь свой код
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовОбъявление и инициализация 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиЗубчатые массивыОсновные операции с матрицамиПовторение — многомерные массивы4Методы управления потоком выполнения
Досрочный выходЗащитные условияОператоры перехода (goto)Break и ContinueУпрощение вложенных условных конструкций7Логические операторы: продвинутый уровень
Вычисление с коротким замыканиемУсловные логические операторыПриоритет операторовПовторение — продвинутые операторы2Продвинутое принятие решений
Множественные условияСложная логика BooleanСравнение If и SwitchВложенные конструкции SwitchПовторение — продвинутые решения5Обработка исключений
Основы Try-CatchТипы исключенийНесколько блоков CatchРабота с файламиБлок FinallyИспользование Using вместо Try-FinallyПользовательские исключенияПовторение — обработка ошибок3Улучшение циклов
Производительность цикловИтерация по сложным структурамКаждый тип циклаРефакторинг цикловПовторение — оптимизированные циклы6Обработка null
Основы ссылок на nullТипы значений, допускающие nullШаблоны проверки на nullЗащитное программированиеПовторение — безопасность при работе с nullПотренируйтесь самостоятельно: Онлайн-компилятор C#