.aspxおよび.ascxページ内の例外をキャッチする
-
02-07-2019 - |
質問
質問にはすべてが記載されています。次のサンプルコードをご覧ください:
<ul id="css-id">
<li>
<something:CustomControl ID="SomeThingElse" runat="server" />
<something:OtherCustomControl runat="server" />
</li>
</ul>
これらのコントロール(マスターページにある)内のどこかにエラーがスローされると、サイト全体がダウンします。どのようにこれらの例外をキャッチしますか?
解決
Global.asaxページ/クラスの他の場所で処理されないすべての例外をキャッチできます。 見てください:
protected void Application_Error(Object sender, EventArgs e)
メソッド。
他のヒント
残念ながら、未処理の例外は常にサイトにエラーを引き起こします。 ただし、いくつかの方法でこれを防ぐことができます。
- web.configのセクションを使用して、わかりやすいメッセージを表示します
- Global.asaxまたはカスタムハンドラーで、未処理の例外をキャッチし、それに応じて対応します-このような
ベストソリューション
- コントロールが未処理の例外をスローしないことを確認してください!
global.asaxを追加して、Application_Errorハンドラーを実装します。 Server.GetLastError()関数を使用して、スローされた例外のハンドルを取得します。
ASPでカスタムエラーレポートページを作成する方法の説明に従って、global.asax Application_Errorメソッドを使用します。 Visual C#.NETを使用したNET 。
別のアプローチは、 HTTPモジュールを使用することです。これにより、柔軟性が向上します(たとえば、複数のアプリケーションからのエラーを処理できます)。
例外をキャッチして処理しますか?
または、イエロースクリーンオブデスを防止しますか? Yellow Screen Of Deathを防止しようとしている場合は、 HttpApplication
で(つまり、Global.asaxで) Error
イベントを処理することを確認してください。
詳細については、次のMSDNページを参照してください。 http://msdn.microsoft.com/en- us / library / system.web.httpapplication.error.aspx
特にこの段落:
Errorイベントを発生させる例外は、GetLastErrorメソッドの呼び出しによってアクセスできます。アプリケーションでカスタムエラー出力を生成する場合は、ClearErrorメソッドの呼び出しによってASP.NETによって生成されるデフォルトのエラーメッセージを抑制します。