MVC 例外の関連処理

巴扎黑
巴扎黑オリジナル
2017-08-08 13:18:151777ブラウズ

この記事では、主に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。