给出这个例子:
let value = try (lazy raise(Exception())).Value with | _ -> false
为什么未在try块中捕获异常。请记住,我提出这样的异常来证明这个例子。关键是如果我有一个抛出和异常的惰性代码,它似乎无法在try块中捕获。我必须在异常的匹配中具体,还是必须在惰性表达式中捕获异常?
答案 0 :(得分:0)
以下打印异常和false的值。
let value =
try
(lazy raise(System.Exception())).Value
with
| exn -> printfn "%A" exn
false
printfn "%A" value
答案 1 :(得分:0)
我无法回复您的结果。你在看什么?
let value =
try
(lazy raise(Exception())).Value
true
with
| ex ->
printfn "got exception";
false
给我
got exception
val value : bool = false
编辑:
添加调试图像