この記事では、主に MVC 例外処理の関連情報を詳しく紹介します。興味のある方は参考にしてください。
日々の開発では、処理のために多くの例外をキャッチします。通常、私たちの方法は try を追加することです。ただし、例外処理が必要な場所がたくさんある場合は、本質的に「怠惰な」プログラムの場合は、catch ブロックを頻繁に作成する必要があります。中国共産党の一員として、私たちは常にそうしたいと考えています。ショートカットを見つけます。したがって、グローバル例外処理が発生します。そこで、今日は MVC でグローバル例外処理を実行する方法を見ていきます。
1. MVC フレームワーク独自のグローバル例外処理
MVC では、フレームワークはグローバル例外処理機能クラスのセットである HandleErrorAttribute クラスを提供します。このようなコード行は、MVC の App_Start フォルダーにある FilterConfig.cs ファイルにあります
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }
これは、HandleErrorAttribute クラスをインスタンス化し、フィルターに配置するためのものです。次に、[Views] > [Shared] フォルダーに Error.cshtml ページがあります。このページのモデル タイプは、MVC フレームワークによって作成されたもので、直接使用できます。
Error.cshtml ページでは、エラー情報を表示するためのさらなる処理を実行し、必要に応じてエラー情報を表示できます。これらのエラー メッセージは、System.Web.Mvc.HandleErrorInfo クラスの特定のプロパティにあります。
例: 以下は Error.cshtml です。
コントロールに意図的に例外を書きます:
public class HomeController : Controller { public ActionResult Index() { string i = "12a"; int j = Convert.ToInt32(i); return View(); } }
それを実行して、結果を見てみましょう。
上記は操作の結果です。System.Web.Mvc.HandleErrorInfo クラスには、直接使用できる豊富な属性がまだ残っていることがわかります。
MVC 独自の例外処理セットは、デフォルトで 500 番台のエラー コードを持つ例外を処理します。404 の場合、これは実行されません。ただし、Web.config ファイルの設定を通じてこれを処理できます。私たちがどのように対処するかをご覧ください。
まず、Error.cshtml ページを完成させ、それにコントロールを追加します。次に、404 を処理するためのビューとコントロールを作成します。次のように
namespace Exception.Controllers { public class SharedController : Controller { // GET: Shares public ActionResult Error() { return View(); } public ActionResult NotFondError() { return View(); } } }
ページ:
次に、ブラウザのアドレスに間違ったアドレスを書き込み、結果を確認します:
2. MVC の例外処理を書き換えます
開発中に、多くの場合、このような要件があり、テキスト ログを通じて例外を記録して保存する必要があります。その場合、MVC 独自の例外処理メソッド System.Web.Mvc.HandleErrorInfo にはそのような関数がないため、この関数を書き換えます。次に、書き換え方法を見てみましょう。
まずクラスを構築し、このクラスに System.Web.Mvc.HandleErrorInfo を継承させ、次に System.Web.Mvc.HandleErrorInfo: OnException メソッドの仮想メソッドをオーバーライドします。
public class CustomHandleErrorAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); var err = filterContext.Exception.Message;//错误内容 //============================= //将错误记录到日志中 //============================= } }
次に、FilterConfig.cs を追加します:
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new CustomHandleErrorAttribute()); } }
このようにして、ニーズを完了できます。
以上がMVC 例外の関連処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。