2009-06-08 7 views
5

例外メッセージをオーケストレーション変数に格納するために単純な式シェイプを配置した「キャッチ例外」部分を持つBizTalk(2006 R2)スコープがあります。BizTalkスコープ「Catch Exception」一般的な例外メッセージ

問題は、例外タイプを「一般的な例外」にすると、例外オブジェクト名を指定することができないということです。この状況でどこで例外情報を取得できますか?

次に、System.Exceptionとして例外タイプを選択するだけだと考えましたが、それはできません。より具体的な.NET例外タイプのみを選択できます。

私は間違っているのですか、これはBizTalkの仕組みですか?

答えて

8

例外が宣言されていない状態で、C#で "catch {}"ブロックを実行するのと同じように "Generic Exception"をキャッチすることを考えてください。したがって、例外が発生する可能性があるため、その時点で例外メッセージを取得する方法はありません(潜在的には、System.Exceptionから派生したものではない可能性があります)。

しかし、あなたがSystem.Exceptionをキャッチする例外の種類として選択できないと言ったとき、あなたは何を意味するのかは分かりません。あなたはそれを最も確かに行うことができ、過去に何度もやったことがあります。ヘック、ちょうどそれをもう一度試して、それがそこにあります。

エラーが発生していますか?タイプ選択ダイアログには表示されませんか?

+0

あなたは正しいです。System.Exceptionが見つかりました。選択ダイアログが実際にどのように機能するかを理解しました。 – lox

+0

.NETの例外はすべてSystem.Exceptionから派生しています。 – Slugart

1

私の友人は、左側のパネルでアセンブリ "mscorlib"をクリックしてから、 "System"という名前空間をクリックすると、例外タイプ "System.Exception"を選択できます(mforlibのクラス名、scroll 「System.Exception」が表示されます。私はそれがあなたの役に立てば幸い

...

挨拶

0

私はオーケストレーションのプロパティ]ウィンドウで、他の選択でこの同じ問題に遭遇してきました。それはVisual Studio内のバグのようです。 .NETアセンブリを選択しようとすると、「プロパティが無効です」というエラーが表示されます。私はもう一度VSを閉じて開いて、メッセージが消えてしまったようだ。

2

2つの方法の違いは、例外オブジェクトへのハンドルを与え、もう一方は例外ではないことです。 Exceptionオブジェクトに含まれる情報が必要ない場合は、「一般的な例外」を選択する必要があります。それ以外の場合は、mscorlibからSystem.Exceptionクラスを選択できます。一般的な例外の

0

は:C#の場合、これはあなたが例外オブジェクトをチェックしたいか、単に再スロー例外にしたくないときは、それを使用することができますcatch{}

のように振る舞います。

System.Exception: behaves like catch(exception ex){} 

すべてC#例外はこの例外クラスから継承されます。ビッツトークのコンテキストではすべての例外を捕捉しません。

参照用にスクリーンショットをご覧ください。

Screenshot 1

Screenshot 2

+0

この回答は他の回答には含まれていないことは何も説明していません... –

関連する問題