Member 14129661 Ответов: 1

Присвойте object.result значение null, если он вызывает исключение


У меня есть следующий набор кода

Task<List<ExchangeRateDto>> getUsdExchangeRatesTask =
                    Task.Factory.StartNew(() => _accountsService.GetExchangeRates("USA", "USD"));
                
                JobDetailsModel model = GetJobDetailsModel(getUsdExchangeRatesTask.Result, job);



В приведенном выше примере, если вызов _accountService завершается неудачей по какой-либо причине, например service down или конечная точка не совпадает, то "
getUsdExchangeRatesTask.Result
- бросает исключение.

Я бы предпочел обращаться так, чтобы вызов службы не удался тогда
getUsdExchangeRatesTask.Result
должно быть присвоено значение Null, чтобы дальнейший вызов других методов не повлиял.

Что я уже пробовал:

Я попытался использовать блок try catch, но он просто ловит исключение, но я хотел бы присвоить этому значению NUll. Может ли кто-нибудь, пожалуйста, помочь мне решить эту проблему.

MadMyche

Не могли бы вы показать нам try....catch версия?

Richard Deeming

Почему вы запускаете новый поток для вызова синхронного метода, если затем немедленно блокируете текущий поток, чтобы дождаться завершения этого метода? Просто вызовите метод напрямую.

1 Ответов

Рейтинг:
2

Richard MacCutchan

В вашем блоке catch вам нужно проверить, какое исключение было выброшено. Затем вы можете решить, можно ли просто установить результат равным нулю или нужно предпринять какие - то дальнейшие действия.