Menu
CoddyTech

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

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

challenge icon

Задание

Средне

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

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

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

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

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

using System;

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

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

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

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