我可以声明一个自定义异常,如下所示:
exception Foo of string
,
将字符串映射到Message属性。
我如何声明一个我以后可以使用它来引发捕获的异常作为此异常的内部异常?换句话说,我如何做(伪)
之类的事情try
...
with e -> raise Foo (message, innerException) where innerException is e?
谢谢!
答案 0 :(得分:9)
使用exception
的简单异常声明在很多方面受到限制。如果要使用标准.NET异常的其他功能(即内部异常),则可以将异常声明为类:
open System
type FooException(message:string, innerException:Exception) =
inherit Exception(message, innerException)
您还可以提供重载的构造函数,例如,如果您想将null
用作InnerException
的默认值。
可以使用raise
:
raise (new FooException(message, e))