Я пытаюсь регистрировать и регистрировать ошибки в каждом возможном месте в моем приложении Elmish (Fable).
Если я добавил обработчик ведения журнала с помощью Program.withErrorHandler, нужно ли также добавлять код ведения журнала в регистр ошибок каждого вызова cmd.ofAsync?
StackOverflow говорит, чтобы показать некоторый код, поэтому вот моя функция обновления состояния:
| ZipCodeChanged (ZipCode s) ->
let newZip, cmd =
if s |> ZipCode.looksLikeAZipCode then
let cmd = Cmd.ofAsync api.LookupZipCode (ZipCode s) LookupZipCodeResponse LookupZipCodeError
InvalidInput (ZipCode s, [ValidationError "Validating ZIP Code ..."]), cmd
else
InvalidInput (ZipCode s, [ValidationError "Please inputs a 5 digit numeric ZIP Code."]), Cmd.none
{ model with ZipCode = newZip }, cmd
| LookupZipCodeResponse (posOpt) ->
(... eliminated for brevity ...)
| LookupZipCodeError e ->
{ model with ZipCode = InvalidInput (ZipCode "", [ValidationError (sprintf "Error validating ZIPCode: %s" e.Message)]) }, Cmd.none
Этот код обрабатывает ZipCode как «InvalidInput» с удобным для пользователя сообщением проверки все время до получения успешного LookupZipCodeResponse.
Но если этот вызов к бэкэнд-API завершится неудачно, нужно ли мне добавлять свой собственный код регистрации в LookupZipCodeError, если я уже предоставил функцию регистрации, которую я предоставил для Program.withErrorHandler?