F#异常和内部异常属性

时间:2011-11-29 19:20:36

标签: f#

在F#中的

我可以声明一个自定义异常,如下所示: exception Foo of string

将字符串映射到Message属性。

我如何声明一个我以后可以使用它来引发捕获的异常作为此异常的内部异常?换句话说,我如何做(伪)

之类的事情
try 
   ... 
with e -> raise Foo (message, innerException) where innerException is e?

谢谢!

1 个答案:

答案 0 :(得分:9)

使用exception的简单异常声明在很多方面受到限制。如果要使用标准.NET异常的其他功能(即内部异常),则可以将异常声明为类:

open System

type FooException(message:string, innerException:Exception) =
   inherit Exception(message, innerException)

您还可以提供重载的构造函数,例如,如果您想将null用作InnerException的默认值。 可以使用raise

将异常引发为普通的.NET异常
raise (new FooException(message, e))