0

私の意図は、例外がキャッチされたときにエラーをログに記録し(Log4Netを使用しています)、エラーメッセージが表示された見栄えの良いページにリダイレクトすることです。タイプTオブジェクト、主にDataSetを返すクラスがあります。

私がこれを書いたCatchステートメントでは、それは機能しますが、より適切な処理方法があるかどうかはわかりません。誰かがアドバイスをいただけますか。ありがとう。クラスにはリターンタイプがあるため、スローを省略できないことに注意してください。

      catch (Exception ex)
        {
            log.Error(ex);
            HttpContext.Current.Response.Redirect("~/errorPage.aspx");
            throw ex;
        }
4

1 に答える 1

2

これは、ページ上のエラーをどのように処理するかによって異なります。一般に、未処理の例外は、一般的なgloabl.asaxファイルのapplication_errorにバブルアップする必要があります。このエラーを処理する簡単な方法の1つを次に示します。

void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
// Get the exception object.
Exception exc = Server.GetLastError();

// Handle HTTP errors
if (exc.GetType() == typeof(HttpException))
{
// The Complete Error Handling Example generates
// some errors using URLs with "NoCatch" in them;
// ignore these here to simulate what would happen
// if a global.asax handler were not implemented.
  if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength"))
  return;

//Redirect HTTP errors to HttpError page
  Server.Transfer("HttpErrorPage.aspx");
}

  // For other kinds of errors give the user some information
 // but stay on the default page
  Response.Write("<h2>Global Page Error</h2>\n");
 Response.Write(
  "<p>" + exc.Message + "</p>\n");
  Response.Write("Return to the <a href='Default.aspx'>" +
  "Default Page</a>\n");

 // Log the exception and notify system operators
 ExceptionUtility.LogException(exc, "DefaultPage");
 ExceptionUtility.NotifySystemOps(exc);

 // Clear the error from the server
 Server.ClearError();
}
于 2012-12-31T06:40:55.110 に答える