Пользовательские исключения
Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 29 из 66.
Пользовательские исключения позволяют создавать специальные типы исключений для уникальных сценариев ошибок вашего приложения.
Чтобы создать пользовательское исключение, определите класс, который наследуется от Exception. Наследование означает, что новый класс автоматически получает все поведение родительского класса, в данном случае 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, чтобы задать сообщение об ошибке.
Первый конструктор задаёт сообщение по умолчанию, если оно не указано.
Второй конструктор принимает пользовательское сообщение, чтобы вызывающий код мог подробно описать ошибку.
Теперь при необходимости можно выбросить собственное исключение:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}При выполнении этого кода с отрицательным возрастом будет выброшено ваше пользовательское исключение с сообщением "Age cannot be negative."
Примечание: В упражнениях этого урока функции проверки возвращают true, если входные данные допустимы, и выбрасывают пользовательское исключение, если это не так. Поскольку необработанное исключение немедленно останавливает выполнение, тестовые случаи должны проверять только путь возврата true: для недопустимых входных данных наблюдаемым результатом является само исключение.
Задание
СреднеСоздайте пользовательский класс исключения с именем InvalidTemperatureException, который наследуется от Exception. В нём должны быть:
- Конструктор по умолчанию, задающий сообщение "Temperature is not valid."
- Конструктор, принимающий пользовательское сообщение.
Затем реализуйте метод с именем checkTemperature, который:
- Принимает целочисленный параметр, представляющий температуру в градусах Цельсия
- Выбрасывает исключение
InvalidTemperatureExceptionс сообщением "Temperature below absolute zero!", если температура меньше -273 - Возвращает true, если температура допустима
Попробуйте сами
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#