告诉F#重新加注没有返回任何值

Edw*_*rey 2 f# exception-handling rethrow

我如何帮助F#编译器解释重新抛出异常没有返回值?

例如,考虑包装操作以记录异常:

let doDivision() =
    try
        2 / 0
    with ex ->
        log ex
        reraise
Run Code Online (Sandbox Code Playgroud)

编译器报告此错误reraise:

这个表达式应该有类型,int但这里有类型unit -> 'a

Foo*_*ole 7

"再加"是一种功能.你需要将单位传递给它.

let doDivision() =
    try
        2 / 0
    with ex ->
        log ex
        reraise ()
Run Code Online (Sandbox Code Playgroud)