【发布时间】:2014-02-17 21:50:31
【问题描述】:
我最近遇到了这个问题,想检查一下我是否对 F# 异常有误解。我正在使用 Visual Studio 2012。鉴于以下 F# 代码:
[<EntryPoint>]
let main argv =
try
raise (System.AccessViolationException("foo"))
printfn "Should not get here"
raise (System.AccessViolationException("foo"))
printfn "Should not get here either"
with | :? System.FormatException -> printfn "Should not get here"
这将引发 with 语句不应捕获的 AccessViolationException,因为 with 仅处理 System.FormatException。我希望调试器在异常发生时位于第一个raise,但实际上它位于with 的末尾:
现在的问题是我看不到异常是从哪里引发的,我也看不到有关异常的任何信息,例如堆栈跟踪。我不认为我想更改个别异常的异常设置,因为我想知道任何未处理的异常(类似于C# 或VB.NET)的位置,而不是在抛出时。
如果只是这样,那没关系,但我只是想问一下,因为我对F# 不是很熟悉,我想确保我没有遗漏任何东西。我在网上查了一下,没有找到任何相关信息。
【问题讨论】:
标签: f#