在 F# 中,我可以像这样声明一个自定义异常:exception Foo of string
,
它将字符串映射到 Message 属性。
我如何声明一个我以后可以用来引发捕获的异常作为这个异常的内部异常?换句话说,我该怎么做(伪)
try
...
with e -> raise Foo (message, innerException) where innerException is e?
谢谢!
最佳答案
使用 exception
的简单异常声明在很多方面受到限制。如果要使用标准 .NET 异常的其他功能(即内部异常),则可以将异常声明为类:
open System
type FooException(message:string, innerException:Exception) =
inherit Exception(message, innerException)
您还可以提供重载的构造函数,例如,如果您想使用
null
作为 InnerException
的默认值.可以使用
raise
作为普通的 .NET 异常引发异常。 :raise (new FooException(message, e))
关于F# 异常和内部异常属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316448/