ホームページ >バックエンド開発 >PHPチュートリアル >MVC例外処理に関する問題と解決例
この記事では、主に MVC例外処理 の関連情報を詳しく紹介します。興味のある方は参考にしてください。例外処理が必要な場所に try catch ブロックを追加する方法があります。ただし、例外処理が必要な場所が多数ある場合は、try catch ブロックが頻繁に記述されることになります。ショートカット。したがって、グローバル例外処理が存在します。そこで、今日は MVC でグローバル例外処理を実行する方法を見ていきます。
1. MVCFramework独自のグローバル例外処理 MVC では、フレームワークによりグローバル例外処理機能クラス Han
dleErrorAttribute クラスのセットが提供されています。このようなコード行は、MVC の App_Start フォルダーにある FilterConfig.cs ファイルにあります
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }
に配置するためのものです。次に、[Views] > [Shared] フォルダーに Error.cshtml ページがあります。このページの Model のタイプは、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 サイトの他の関連記事を参照してください。