MVCでの例外処理[例外を処理するための上位2つの方法]
公開: 2020-12-29MVCでの例外処理は、主に、特定の仕様と条件を必要とし、固有の要件を持つ基幹業務アプリケーションを作成するときに使用されます。
どのような例外処理が詳細であり、それがアプリケーションでどのように役立つかを理解しましょう。
目次
例外処理とは何ですか?
これは、発生し、特定の方法を必要とする例外的な状態を処理して対応するプロセスです。 これをビジネスアプリケーションに組み込んで、結果を向上させ、すべての要件が適切に処理されるようにする必要があります。
これらの例外を処理する2つの重要な方法があります
- キャッチアンドブロック方式
- アプリケーションのエラー処理方法。
ただし、プロセスに使用される方法はこれらだけではありません。
ここでは、MVCで例外を管理するために使用できるさまざまな手順と手法について説明します。
トライキャッチ処理方法
catch and blockメソッドは、MVCベースのアプリケーションで例外処理に使用される従来のメソッドと見なされます。 この方法を使用してエラー情報をログに記録します。

試す
{例外を追加します;}
キャッチ(例外名)
{{
ビューを返す(「エラー」);
}
tryブログに例外条件を入力し、catchブロックの例外名を追加します。 例外がcatchブロックでキャッチされると、言及されているエラーが返されます。
これは、アプリケーション内のすべてのエラーを処理およびログに記録するためにも使用できます。
OnExceptionメソッド
このメソッドを使用すると、コントローラークラス内のOnExceptionメソッドをオーバーライドできます。 エラーコード500は、MVCでの例外処理の結果としてログに記録されたすべてのエラーを処理するために使用されます。
基本的に、tryループなしで、このメソッドを使用して例外のビューをログに記録して指定できます。 このメソッドを開始するために、web.configで<customErrors>構成を有効にする必要はありません。
パブリッククラスHomeController:コントローラー
{{
public ActionResult Contact()
{{
文字列msg=null;
ViewBag.Message = msg.Length;
View();を返します。
}
保護されたオーバーライドvoidOnException(ExceptionContext filterContext)
{{
filterContext.ExceptionHandled = true;
//エラーをログに記録します!!
//アクションにリダイレクト
filterContext.Result = RedirectToAction( "Error"、 "InternalError");
//または特定のビューを返す
filterContext.Result = new ViewResult
{{
ViewName =“〜/ Views / Error / InternalError.cshtml”
};
}
}
上記のコードを見ると、OnExceptionがvoidメソッドであり、引数としてオブジェクトExceptionContextを受け取っていることがわかります。
この引数には、エラーをログに記録するために必要なすべての情報が含まれています。 ExceptionHandled = trueを設定すると、特定のコントローラーから生成されたアクションを簡単にログに記録できるようになります。
HandleError属性
これは、アプリケーションのMVC内で例外を処理し、エラーを管理するためのもう1つの一般的な方法です。 アクションメソッドまたはコントローラーによって作成されたエラーに気付いた場合は、このメソッドを使用する必要があります。
この属性を使用すると、特定の例外のカスタムビューを表示するように選択できます。 これは、アクションメソッドまたはコントローラーのいずれかで発生する可能性があります。
この場合も、このメソッドは、コード500でエラーを管理している場合にも使用されます。このメソッドを使用して例外をログに記録することはできません。

この属性を追加して、要求どおりに機能させるための特別な方法があります。 FilterConfig.RegisterGlobalFilters()メソッド内にHandleError属性フィルターを追加する必要があります。
これに加えて、<CustomErrors mode =“ on”>カスタムエラーモードがweb.config内で常にonに設定されていることを確認する必要があります。 この時点で、属性をアクティブモードに追加できます。
パブリッククラスHomeController:コントローラー
{{
[HandleError]
public ActionResult Contact()
{{
文字列msg=null;
ViewBag.Message = msg.Length;
View();を返します。
}
}
今述べたコードは、コンテキストと例外処理のニーズに最適です。
ここで、属性はContact()アクションメソッド用に構成されています。 プロセスがコンパイルされると、表示モードで表示されるError.cshtmlが表示されます。
これは、例外が発生した場合にのみ発生します。 これは、すべての例外的な場合のデフォルトのビューです。 この属性を使用して、さまざまなタイプの例外を管理するようにさまざまなページを構成することもできます。
この属性はエラー処理に完全に機能し、すべてのタイプの構成を管理しますが、どこでも機能するとは限りません。 それがあなたのアプリケーションに役立つとあなたが信じるいくつかの例のためにそれを選んでください。
このメソッドは、ロギング例外をサポートしていません。 コード500内のHTTP例外のみをキャプチャすることができます。他のコントローラからの例外をキャプチャすることはできません。 したがって、それはすべての機会とニーズについて考慮することができる属性ではありません。
HandleErrorからの継承
このメソッドを使用して、例外を処理することもできます。 上記の方法では、コンポーネントを再利用できないため、欠点と見なすことができます。
ログに記録する必要のあるすべての例外のコーディングを継続する必要がある場合は、機能できません。
その結果、この拡張機能を使用する必要があります。 これにより、HandleError属性から継承し、特定のコントローラー全体で使用できます。 その結果、頻繁にコーディングしなくても例外を処理できます。
また読む:例外処理インタビューの質問
Application_Errorイベント
Application_Errorイベントは、アプリケーションエラーを処理し、例外を管理するためのさらに別の方法です。 この部分では、global.asaxファイル内のApplication_Errorイベントを制御する必要があります。
このイベントは、MVCのすべてのタイプのエラーコードと例外処理に対してトリガーできるため、使いやすくなり、例外を処理するための最良の方法の1つになります。
これは、アプリケーション内で処理されないすべての例外を管理するために使用できるプライマリエラーロギングメソッドを使用します。
HTTPエラーの管理
ここで説明する方法では、HTTP例外を処理できません。 「ファイルが見つかりません」などの例外や、他の一般的なエラーメッセージが表示される可能性があります。
これらの例外を管理するには、構文内にエラーの詳細とエラーコードを入力する必要があります。
構文をリリースする前に、アプリケーションの一部として表示される可能性のあるすべてのエラーコードとメッセージに注意する必要があります。
基幹業務アプリケーションの知識を高め、プログラミング言語に習熟するには、 upGradに参加してください。
一連のコースとさまざまなキャリアオプションを使用して、キャリアの機会を増やすことができます。
私たちの専門家とつながるか、私たちとの電話を予約して、あなたのためにパーソナライズされたオプションについてもっと知りましょう。
世界のトップ大学のソフトウェアエンジニアリングコースに登録します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論
MVCで例外処理を処理するときは、選択しているメソッドで、考えられるすべてのエラーを記録できることを確認する必要があります。 コンポーネントを再利用して、すべてのアプリケーションエラーを管理できるはずです。 Javaでの例外処理について学びます。
単一のメソッドですべての可能な例外を処理する場合は、GlobalApplication_Errorメソッドを選択する必要があります。 <CustomErrors>とともにすべてのエラーをログに記録し、Web.Configに記録されるようにします。
この方法では、エラーが発生したときにユーザーは特定のページにリダイレクトされます。 例外処理は、ASP.NetMVCを使用したアプリケーション開発のコアコンセプトの1つです。
この記事がMVCでの例外処理について学ぶための洞察に満ちていることを願っています。 さまざまなアプリケーションの詳細については、ブログをご覧ください。
フルスタック開発の詳細に興味がある場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクト、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。
