Re: обработка ошибок
От: -n1l-  
Дата: 29.04.22 21:57
Оценка:
Здравствуйте, MadHuman,
если вы боитесь, что внутри вашей функции какие-то другие функции выкинут какой-то ArgumentException,
который не будет значить, что пользовательские данные некорректны, а будет иметь отношение к реализации тела вашей функции, то тогда хорошим способом будет
написать внутренний блок try-catch для вашей функции GetThing и полученный эксепшн обернуть во что-то другое.

типа

public object GetThing(UserInput input) {
    input = input ?? throw new ArgumentNullException("UserInput can not be empty.");
    try {
        return GetThingInternal(input.SubscriptionId, input.PromoCode, input.Card);
    }
    catch(Exception ex) {
        throw new InvalidOperationException("Subscription can not be renewed.", ex);
    }

}


Если этот путь не подходит, можно создать валидатор для данных и использовать этот валидатор перед тем как
отправлять ваши обьекты в модель. Сам валидатор прикрутить через middleware, так как речь идет о веб приложении.
Для таких валидаторов есть библиотечки типа fluentvalidation и куча примеров как их использовать.
Отредактировано 02.05.2022 14:15 -n1l- . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.