2

さまざまなプロパティを構成するために設計時に使用されるフォームがあります。
フォームレベルですべての例外をキャッチする2つの方法を試しました。

(1)コンストラクターのApplication.ThreadExceptionにハンドラーを追加します。
(2)フォームのShowメソッドをTry/Catchブロックでラップします

これらは両方とも、フォームにプロパティグリッドを追加してテストし、コンポーネントをSelectedObjectとして設定すると、実行時に機能します。

ただし、設計時には、フォームはメッセージなしで閉じられます。私のメッセージも、未処理の例外があることを説明するメッセージもありません。

何か案は?

ETA:これは設計時のデバッグに関するものではありません。タイプエディタで未処理の例外が発生したときに、ユーザーにわかりやすいメッセージを表示する方法について説明します。

4

1 に答える 1

0

Application技術的には設計時にオブジェクトがなくShow()、同じ方法でメソッドを呼び出しません。例外をキャッチする最善の方法は、デザイナーが読み込みに問題を抱えている問題のあるメソッドまたはプロパティを try/catch で囲み、例外をスローすることです。

テストのために、フォームに というダミーのプロパティを追加し、次のようIamGoingToThrowAnExceptionにプロパティのゲッターで を実行します。throw new System.Exception("Caught me in design mode")

public string IamGoingToThrowAnException 
{
    get
    {
        throw new System.Exception("Caught me in design mode.");
    }
}

InitializeComponents同じことが、フォームのメソッドまたはコンストラクターを介して初期化されるすべてのメソッドまたはプロパティに対して機能します。

于 2011-11-03T15:59:58.923 に答える