2

私は次のものを持っています:

    private int order;
    public int Order {
        get { return order; }
        set {
            if ((value < 0) || (value > 99)) {
                throw new Exception(string.Format("{0} must be between 0 and 99", value.ToString()));
            } else {
                order = value;
            }
        }
    }

これはここで呼ばれます:

            try {
                property.SetValue(reference, convertedValue, null);
            } catch (Exception e) {
                var a = e;
            }

50の値を設定すると、すべてが正常に機能します。値を123に設定してデバッグを進めると、property.SetValue行に移動し、次はこれを取得して、最初のコードスニペットの "}else{"コードブロックの終わりを指します。

System.Exception was unhandled by user code
  HResult=-2146233088
  Message=123 must be between 0 and 99
  Source=Test.Storage
  StackTrace:
       at Storage.Models.Reference.set_Order(Int32 value) in C:\Code K\139- Aug  23\Common\Storage\Models\Reference.cs:line 22
  InnerException: 

誰かが例外が処理されない理由を説明できますか?property.SetValueを囲むtryループでキャッチされない理由がわかりません。var a=eにデバッグポイントがあります。しかし、そこには行きません。

4

1 に答える 1

4

問題は、デフォルトで[マイコードのみを有効にする]オプションを有効にするVisualStudioDebuggerにあります。あなたの状況では、あなたはあなたのコードを扱っていませんが、リフレクションコードが動き始めています。

Windowsエクスプローラーから直接アプリケーションを実行する場合は、問題がなく、例外が正しく処理されていることがわかります。

詳細については、http://msdn.microsoft.com/en-us/library/038tzxdw%28v=vs.100%29.aspxを参照してください。同様の投稿で、より詳細な回答がhttps://にあります。 stackoverflow.com/a/2831236/146205

于 2012-08-25T09:58:56.413 に答える