Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# Elmish:Program.withErrorHandler是否处理Cmd.ofAsync的错误情况?_F#_Fable F#_Elmish - Fatal编程技术网

F# Elmish:Program.withErrorHandler是否处理Cmd.ofAsync的错误情况?

F# Elmish:Program.withErrorHandler是否处理Cmd.ofAsync的错误情况?,f#,fable-f#,elmish,F#,Fable F#,Elmish,我正在尝试捕获并记录Elmish(Fable)应用程序中每个可能位置的错误 如果我使用Program.withErrorHandler添加了日志处理程序,那么我是否也需要将日志代码添加到每个cmd.ofAsync调用的错误案例中 StackOverflow说要显示一些代码,所以这里是我的状态更新函数: | ZipCodeChanged (ZipCode s) -> let newZip, cmd = if s |> ZipCode.looksLikeAZip

我正在尝试捕获并记录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
在收到成功的LookupZipCodeResponse之前,此代码始终将ZipCode视为“InvalidInput”,并显示一条用户友好的验证消息


但是如果对后端API的调用失败,我是否需要在LookupZipCodeError中添加自己的日志代码,如果我已经提供了记录我提供给Program.withErrorHandler?的函数,您必须将记录代码添加到
LookupZipCodeError
Program.withErrorHandler
处理
update
中的未捕获错误,而
Cmd.ofAsync
实际上捕获调用的错误案例,并将它们包装在
LookupZipCodeError
msg中