Re[2]: обработка ошибок
От: vaa  
Дата: 30.04.22 01:41
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Здравствуйте, MadHuman,

N>если вы боитесь, что внутри вашей функции какие-то другие функции выкинут какой-то ArgumentException,
N>который не будет значить, что пользовательские данные некорректны, а будет иметь отношение к реализации тела вашей функции, то тогда хорошим способом будет
N>написать внутренний блок try-catch для вашей функции GetThing и полученный эксепшн обернуть во что-то другое.

N>типа


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

N>}
N>


N>Если этот путь не подходит, можно создать валидатор для данных и использовать этот валидатор перед тем как

N>отправлять ваши обьекты в модель. Сам валидатор прикрутить через middleware, так как речь идет о веб приложении.
N>Для таких валидаторов есть библиотечки типа fluentvalidation и куча примеров как их использовать.

А почему бы UserInput не валидировать данные в конструкторе?
☭ ✊ В мире нет ничего, кроме движущейся материи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.