質問

最初のASP.NETをアップロードして(vb.netの学習の一環として)、接続プーリング(Webサイトに複数のユーザーがいると面白いことが起こります)が非常に混乱するようになりました。 try catchステートメントをより適切に使用することで(それは学ぶことでした)しかし、これが最良の/最終的な方法であるかどうか疑問に思っていました。今ではtryが失敗した場合、ページの詳細の多くは配置/更新されませんので、データベースの作業を行っているときに試行が失敗した場合、ページをリロードしますか?自分にリダイレクトして次回動作することを望みますか...またはエラーがあることをユーザーに通知して、もう一度試してください?

ありがとう

役に立ちましたか?

解決

IDisposable を実装するすべてのオブジェクト(接続やリーダーなど)に対して、「 using 」ステートメントを明確に使用する必要があります。 「using」ステートメントは、カバーの下にあるtry-finallyブロックに変換され、エラーが発生した場合でもDispose()が呼び出されるようにします。

コードスニペットの例を次に示します。

using (SqlConnection conn = new SqlConnection(this.connectionString))
{
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "LoadFromRepository";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ID", fileID);

        conn.Open();
        using (SqlDataReader rdr =
                   cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            while (rdr.Read())
            {
                // do something with read data
            }
        }
    }
}

他のヒント

予期しないエラーが発生した場合、ユーザーがエラーページにリダイレクトされるのは、次回も発生する可能性があるためです。

"使用"を検討しましたか? DB接続とリーダーのステートメント?

自動的にリダイレクトすることは決してなく、次回動作することを願っています(無限ループになる可能性があります)。

ユーザーに通知し、必要に応じてリンクを再試行してください。

別の試行が役立つかどうかを確認するために、例外を分析することもできます。いくつかの例外は本当にバグであり、別の試みは助けにはなりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top