Closed
Description
It doesn't seem that try
catches exceptions. Repro (using xUnit and Unquote):
/// Helper type for simulating side effects.
type Trigger() =
let mutable isTriggered = false
member __.Trigger () = isTriggered <- true
member __.Triggered = isTriggered
[<Fact>]
let ``behavior of try-with-finally when thrown`` () =
let tTry = Trigger()
let tCatch = Trigger()
let tFinally = Trigger()
let result = monad {
try
try
failwith ""
tTry.Trigger()
with _ -> tCatch.Trigger()
finally tFinally.Trigger()
}
test <@ result = Ok () @>
test <@ not tTry.Triggered @>
test <@ tCatch.Triggered @>
test <@ tFinally.Triggered @>
None of the unquote tests are checked, because the exception is not caught, but they do describe what should happen if the exception is caught.