Menu
Coddy logo textTech

Пользовательские исключения

Часть раздела Логика и управление потоком путешествия по 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 является наблюдаемым результатом для недопустимых входных данных.

challenge icon

Задание

Средне

Создайте custom исключений class с именем InvalidTemperatureException, который наследует от Exception. В нём должны быть:

  1. конструктор Default, устанавливающий значение message "Temperature is not valid."
  2. конструктор, принимающий custom message.

Затем реализуйте метод с именем checkTemperature, который:

  • принимает целочисленный параметр, представляющий температуру в градусах Цельсия;
  • выбрасывает InvalidTemperatureException с message "Temperature below absolute zero!", если температура меньше -273;
  • возвращает true, если температура valid.

Попробуйте сами

using System;

class CheckTemperature
{
    // Создайте здесь свой пользовательский класс исключения
    
    public static bool checkTemperature(int celsius)
    {
        // Напишите здесь свой код
    }
    
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C#