0

WPF アプリケーションで NotImplementedException をインターセプトするにはどうすればよいですか?

進行中の WPF アプリケーションをテストしているときに、ときどき NotImplementedException をスローします。

Private Sub ButtonDoSomething_Click(...) Handles ButtonDoSomething.Click
    Throw New NotImplementedException( _
        "ButtonDoSomething_Click() not implemented.")
End Sub

しかし、私はむしろこれらがプログラムをクラッシュさせないことを望みます。

このような例外スローをすべて次のものに置き換えることができます。

MessageBox.Show("ButtonDoSomething_Click() not implemented.", _
    "Not Implemented", MessageBoxButton.OK, MessageBoxImage.Information)

しかし、NotImplementedException がインターフェイスから離れて埋もれている場合、それはどういうわけか洗練されていないように見え、機能しません。

このような例外をすべてキャプチャして、メッセージ ボックスを表示するにはどうすればよいですか?

4

3 に答える 3

6

Application クラスの DispatcherUnhandledException イベントにアタッチできます。このイベントは、未処理の例外が発生するたびに発生します。そこで、イベント ハンドラーに渡された DispatcherUnhandledExceptionEventArgs インスタンスの Exception プロパティをチェックして、NotImplementedException 型かどうかを確認できます。そうである場合は、Handled プロパティを true に設定してから戻ります。

例外をスローする代わりに MsgBox を呼び出した場合、実際に何かを返し、すべての out/ref パラメータも設定しなければならないという問題が発生し、追加のオーバーヘッドが発生することに注意してください。

于 2009-02-12T16:07:10.887 に答える
3

Application.DispatcherUnhandledException または AppDomain.UnhandledException を見てください。どちらも、処理されない例外を処理できます。

于 2009-02-12T16:08:37.420 に答える
0

NotImplementedException をスローしたり、MessageBox を使用したりする代わりに、 Debug.Fail を使用できます。例えば:

Debug.Fail("This method is not implemented yet!");

入力したテキストを含むメッセージ ボックスがポップアップ表示され、スタック トレースが表示されます。

于 2009-02-12T22:22:42.293 に答える