F# 异常和内部异常属性

标签 f#

在 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/

相关文章:

F# 起订量返回 "Invalid setup on a static member"

f# - fparsec 解析字符串序列

f# - 过滤并将 `list option` 转换为 `list` ?

sql - 在 F# 中重播记录的数据流

f# - 在声明之前使用函数

f# - 如何在F#中操作列表元素

.net - 如何从 F# dll 重建 F# 程序集签名

recursion - 下面的函数是尾递归吗?

f# - 有没有更好的方法来计算 F# 中立方体的所有可能方向?

f# - F# 中获取集合的幂集的函数