相关疑难解决方法(0)

如何在catch-context中重新抛出异常时保持堆栈跟踪?

TL; DR:如何在以后引发先前捕获的异常,同时保留原始异常的堆栈跟踪.

因为我认为这对Resultmonad或计算表达式很有用,尤其是 因为该模式通常用于包装异常而不抛出异常,所以这里有一个很好的例子:

type Result<'TResult, 'TError> =
    | Success of 'TResult
    | Fail of 'TError

module Result =
    let bind f = 
        function
        | Success v -> f v
        | Fail e -> Fail e

    let create v = Success v

    let retnFrom v = v

    type ResultBuilder () =
        member __.Bind (m , f) = bind f m
        member __.Return (v) = create v
        member __.ReturnFrom (v) = retnFrom v
        member __.Delay (f) = f
        member …
Run Code Online (Sandbox Code Playgroud)

monads f# try-catch computation-expression

9
推荐指数
1
解决办法
896
查看次数

标签 统计

computation-expression ×1

f# ×1

monads ×1

try-catch ×1