2011-11-29 31 views
4

は、私はそうのようなカスタム例外を宣言することができます。Messageプロパティに文字列をマッピングします exception Foo of stringF#の例外と内部例外プロパティ

この例外の内側の例外としてキャッチされた例外を発生させるために後で使用できるものを宣言するにはどうすればよいですか?言い換えれば、どのようにすればいいのですか(擬似)

try 
    ... 
with e -> raise Foo (message, innerException) where innerException is e? 

ありがとう!

答えて

8

exceptionを使用した単純な例外宣言には多くの制限があります。あなたは標準の.NET例外(つまり、内部例外)の他の機能を使用する場合は、クラスとして例外を宣言することができます。

open System 

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

あなたがようnullを使用したい場合は、例えば、オーバーロードコンストラクタを提供することができますInnerExceptionのデフォルト値です。 例外はraiseを使用して、通常の.NET例外として提起することができます。

raise (new FooException(message, e)) 
+0

私はあなたがそれ:)を言うでしょう恐れていました。私は短い宣言でそれをすることができることを望んでいた。ありがとう! – Alex

関連する問題