5

まず、エラーが発生した場合 (処理されたかどうかにかかわらず) 例外をスローしてアプリケーションを実行します。

次にTypeConverter、ユーザー入力文字列から実際のオブジェクトに変換するために を使用しています。

3番目にはメソッドがTypeConverter提供されていないTryConvertため、検証に例外を使用して行き詰まっています。ここでは、かなり醜いコードを使用しています。

try
{
    this._newValue = null;
#pragma Magic_SuppressBreakErrorThrown  System.Exception
    this._newValue = this.Converter.ConvertFromString(this._textBox.Text);
#pragma Magic_ResumeBreakErrorThrown  System.Exception
    this.HideInvalidNotification();
}
catch (Exception exception)
{
    if (exception.InnerException is FormatException)
    {
        this.ShowInvalidNotification(this._textBox.Text);
    }
    else
    {
        throw;
    }
}

-of-1やその他の無効な文字を入力するたびに VS が実行を中断するのはかなり気が散ります。これに似たものを使用できますが、変換しているすべての型がTryParseメソッドを持つわけではありません。

try例外設定を変更せずに、コード内のセクションの中断を無効にする方法があることを願っています。

4

4 に答える 4

16

独自のメソッドに try/catch を配置し、メソッドにこの属性を設定します。

[System.Diagnostics.DebuggerNonUserCode]

デバッガーはそのメソッド内で停止しません (ブレークポイントであっても)。メソッドが終了すると、例外は既に処理されているため、その時点で中断することもありません。

于 2011-03-06T15:22:14.477 に答える
0

直接的な答えではありませんが、TypeConverter を使用する前に文字列値のサニティ チェックを行うメソッドを作成し、それに Conditional("DEBUG") 属性を適用することができます。 TypeConverter を使用する (そしてすべての失敗したケースをキャッチする) 一方で、デバッグ中に一般的なエラーが検出され、TypeConverter にヒットする前に回避されます。

条件を適用することにより、コードのリリース バージョンでこのコードが使用されることをまったく回避できます。これは、現在忍び寄っている一般的なエラーをキャッチするためのものです。

于 2010-03-25T11:42:35.137 に答える
0

Debug -> Exceptions メニューの下で、特定の例外タイプの中断を無効にすることができます。

于 2010-03-25T07:03:02.603 に答える
-1

あなたの質問に完全に従うかどうかはわかりませんが、特定の例外で VS ブレークを無効にしたい場合は、[例外] ダイアログ (ctrl-alt-e) を使用してこれをカスタマイズできます。共通言語ランタイムの例外ツリーを開き、特定の例外にドリルダウンしてオフにします。FormatException は System. そうすれば、VS は FormatException を除くすべてのマネージ例外で中断します。

于 2010-03-25T07:03:05.107 に答える