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

时间:2017-02-21 20:17:18

标签: exception-handling f# rethrow

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

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

let doDivision() =
    try
        2 / 0
    with ex ->
        log ex
        reraise

编译器报告reraise的错误:

  

此表达式应为int类型,但此处的类型为unit -> 'a

1 个答案:

答案 0 :(得分:7)

“reraise”是一个功能。你需要将单位传递给它。

let doDivision() =
    try
        2 / 0
    with ex ->
        log ex
        reraise ()