@embiid

Как выкинуть кастомное исключение?

к примеру есть такой кастомный эксепшн:
public class CustomerExistsException
    {
        public void DisplayException()
        {
            throw new AuthException("The email has already been taken.");
        }
    }

    public class AuthException : Exception
    {
        public AuthException(string message) : base(message) { }
        public AuthException(string message, Exception exception) 
            : base(message, exception) { }
    }


И как потом его закинуть в сервисе?
public async Task<CustomerDto> Register(CustomerDto customerModel, string password)
        {
            if (await EmailExists(customerModel.Email))
            {
                //Cannot implicitly convert type CustomerExistsException to System.Exception
                //throw new CustomerExistsException();
            }
        }
  • Вопрос задан
  • 122 просмотра
Решения вопроса 2
@cicatrix
было бы большой ошибкой думать
Проброс исключения - самое "дорогое" из всех возможных решений проблемы в плане производительности. К тому же, это и не исключение вовсе, а вполне штатная ситуация. Простая проверка в виде вызова bool CustomerExists будет выглядеть здесь гораздо уместнее. К тому же, эта проверка у вас уже производится.
А так, да, класс любого исключения должен быть наследником System.Exception
Ответ написан
Комментировать
vabka
@vabka Куратор тега ASP.NET
Токсичный шарпист
1. Любое исключание, которое вы хотите кинуть должно наследоваться от System.Exception
2. CustomerException выглядит странно. Зачем там вообще метод "DisplayException"?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
edward_freedom
@edward_freedom
Обычная функция
new CustomerExistsException().DisplayException();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы