発生した例外は this.Server.GetLastError()で取得できるのだが、例外は基本的にHttpUnhandledExceptionにラップされている(必ずではない)ので注意する必要がある。
例外を処理したら this.Server.ClearError()でクリアすること。ただし、Web.configのcustomErrorsセクションに設定したエラー処理方法を適用させたい場合はクリアしない。
Global.asax void Application_Error(object sender, EventArgs e)
{
Exception ex =
this.Server.GetLastError() is HttpUnhandledException ?
this.Server.GetLastError().InnerException :
this.Server.GetLastError();
this.Server.ClearError();
if (ex is ApplicationException)
{
// 業務上の例外に対する処理
}
else
{
// 技術的な例外に対する処理
}
}
また、ページ単位で例外ハンドラを用意することもできる。
この場合はPage_Error(TemplateControl.Errorイベントのハンドラ)で処理する。
Global.asaxのApplication_Errorとは違い、GetLastError()で取得できる例外はハンドルされなかった例外そのものである。
Hoge.aspx.cs protected void Page_Error(Object sender, EventArgs e)
{
Exception ex = this.Server.GetLastError();
this.Server.ClearError();
if (ex is ApplicationException)
{
// 業務上の例外に対する処理
}
else
{
// 技術的な例外に対する処理
}
}
お疲れ様です。いつもお世話になっております。
asp.netでGlobal.asaxのApplication_Errorのエラーの消し方を探していたらここにたどり着きました!!
参考にさせていただきます。
ありがとうございました。
2010.05.25 17:41 URL | kaiso #- [ 編集 ]
承認待ちコメント
このコメントは管理者の承認待ちです
2010.07.23 03:30 | # [ 編集 ]
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/1-38849a20