文章https://devblogs.microsoft.com/dotnet/the-good-and-the-bad-of-exception-filters/表明 F# 本身支持异常过滤器(例如,在 C# 中没有语法)。异常过滤器在适当的 catch 块之前运行,如果它们返回 true,则将执行 catch 块。我会想象 F# 使用类似这样的东西来做到这一点
with
| ex when filter(ex) -> printfn "Caught"
但是,对我来说,它通过调用 catch 块内的过滤器函数编译为通常的“catch [mscorlib]System.Object”,并且生成的 MSIL 中不存在“过滤器”部分。所以问题是,F# 真的支持这种结构吗?
谢谢