0

カスタム例外クラスを追加する必要がある Web プロジェクトを開発しています。たとえば、セッション タイムアウトが発生したときにカスタム例外クラスからメッセージを表示するにはどうすればよいですか? 助けてください。どのサンプルも役に立ちます。

これは、これまでに例外クラスに書いたものです。

public class CustomException : Exception
{
    private string message;

    public CustomException ()
    {
        this.message = "Invalid Query";
    }
    public CustomException (String message)
    {
        this.message = message;

    }

}

これをセッション タイムアウトとリンクする方法を知る必要があります。ここから、同じロジックを記述する必要があります。ありがとうございました。

4

4 に答える 4

1

が発生したときにカスタムをスローするexception場合は、次のように実行できます。

try {
    DataTable dt = q.ExecuteQuery(); //This throws a timeout.
} catch(SessiontTimeoutException ste) {
    throw new CustomException("Session has timed out");
} catch(Exception e) {
    //Show unexpected exception has occured
}

これがあなたがやろうとしていることかどうかはよくわかりません。
更新:
SqlException が TimeoutException であるかどうかを確認するには、このStackOverFlow 投稿を参照してください。

于 2011-07-14T06:53:06.177 に答える
0

Inner Exceptionシステムエラーメッセージとともにユーザーフレンドリーな例外メッセージを取得するために使用することをお勧めします。を取得MyExceptionすると、例外メッセージとシステム例外メッセージが に表示されMyException.ToString()ます。

また、例外のコーディングが気になる場合は、VS のコード スニペット機能を使用できます。'Exception' と入力して TAB キーを 2 回押すだけで、VS はException次のコードのようにクラスを作成します。

try
{
    DataTable dt = q.ExecuteQuery(); //This throws a timeout.
}
catch (SessiontTimeoutException ex)
{
    throw new MyException("my friendly exception message", ex);
}

[Serializable]
public class MyException : Exception
{
    public MyException() { }
    public MyException(string message) : base(message) { }
    public MyException(string message, Exception inner) : base(message, inner) { }
    protected MyException(
      System.Runtime.Serialization.SerializationInfo info,
      System.Runtime.Serialization.StreamingContext context)
        : base(info, context) { }
}
于 2011-07-14T07:08:30.023 に答える
0

あなたはこれを次のように書きたいかもしれません

public CustomException() : base("Invalid Query") { }

このようにして、他のコンストラクターに対して例外メッセージが正しく渡されます

public CustomException(String message) : base(message) { }

その場合、プライベート文字列メッセージ フィールドは必要ありません。

于 2011-07-14T06:31:04.390 に答える
0

SqlException クラスは、SqlError オブジェクトのコレクションであるプロパティErrorsを公開します。テーブルのエントリに対応する各エラー オブジェクトのNumberプロパティをクエリできますmaster.dbo.sysmessages

于 2011-07-14T06:56:03.120 に答える