F#异常类型的本质是什么

LLS*_*LLS 1 f# exception

我正在学习F#,我发现了一个有趣的问题.我们可以使用F#类型异常

exception MyExpetion of string
Run Code Online (Sandbox Code Playgroud)

但是,当我们匹配它时,我们可以使用与匹配区分联合相同的语法.同时,它是一个System.Exception.这是怎么做到的?F#例外的类型是什么?我试图搜索但没有找到明确的答案.谢谢.

kvb*_*kvb 5

您可以将异常类型视为一种"开放"区分联合,其中Exception可以随时添加该类型的其他构造函数.因此,正如您所料,静态类型MyException "test"is Exception和类型值Exception可以与模式匹配MyException _.