2

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

例如,考虑包装一个操作来记录异常:

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

编译器报告此错误reraise

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

4

1 回答 1

7

“reraise”是一个函数。您需要将单位传递给它。

let doDivision() =
    try
        2 / 0
    with ex ->
        log ex
        reraise ()
于 2017-02-21T20:29:07.373 回答