MVC 中的異常處理 [處理異常的前 2 種方法]

已發表: 2020-12-29

MVC 中的異常處理主要用於創建需要特定規範和條件並具有獨特要求的業務線應用程序。

讓我們深入了解什麼是異常處理以及它如何幫助您處理應用程序。

目錄

什麼是異常處理?

它是處理和響應發生的異常情況並需要特定方法的過程; 這需要納入業務應用程序,以增強結果並確保正確處理所有要求。

處理這些異常有兩種重要的方式

  • 捕獲和阻塞方法
  • 應用程序錯誤處理方法。

然而,這些並不是用於該過程的唯一方法。

在這裡,我們將討論可用於在 MVC 中管理異常的不同步驟和技術。

Try-Catch 處理方法

catch 和 block 方法被認為是基於 MVC 的應用程序中用於異常處理的傳統方法 您將使用此方法記錄錯誤信息。

嘗試

{添加一個例外;}

捕獲(異常名稱)

{

返回視圖(“錯誤”);

}

您在 try 博客中輸入異常條件並為 catch 塊添加異常名稱。 當異常在 catch 塊中被捕獲時,它將返回它提到的錯誤。

這也可用於處理和記錄應用程序中的所有錯誤。

OnException 方法

此方法允許您覆蓋控制器類中的 OnException 方法。 錯誤代碼 500 用於處理因 MVC 中的異常處理而導致的所有記錄錯誤

基本上,您可以使用此方法記錄並指定異常的視圖,而無需使用 try 循環。 您無需啟用 web.config 中的 <customErrors> 配置即可開始使用此方法。

公共類 HomeController:控制器

{

公共 ActionResult 聯繫人()

{

字符串味精=空;

ViewBag.Message = msg.Length;

返回視圖();

}

受保護的覆蓋無效 OnException(ExceptionContext filterContext)

{

filterContext.ExceptionHandled = true;

//記錄錯誤!!

//重定向到動作

filterContext.Result = RedirectToAction(“錯誤”, “內部錯誤”);

// 或者返回特定視圖

filterContext.Result = 新視圖結果

{

ViewName = “~/Views/Error/InternalError.cshtml”

};

}

}

看一下上面的代碼,你會注意到 OnException 是一個 void 方法,它以對象 ExceptionContext 作為參數。

此參數包含記錄錯誤所需的所有信息。 如果您設置 ExceptionHandled=true,那麼您將能夠輕鬆記錄從特定控制器生成的操作。

HandleError 屬性

這是在應用程序的 MVC 中處理異常和管理錯誤的另一種流行方法。 如果您注意到由操作方法或控制器創建的錯誤,您應該使用此方法。

使用此屬性,您可以選擇顯示特定異常的自定義視圖。 這可能發生在操作方法或控制器中。

同樣,當您使用代碼 500 管理錯誤時,也會使用此方法。您無法使用此方法記錄異常。

有一種特殊的方法可以添加此屬性以使其按您的要求工作。 您應該在 FilterConfig.RegisterGlobalFilters() 方法中添加 HandleError 屬性過濾器。

除此之外,您應該確保在 web.config 中始終將 <CustomErrors mode = “on”> 自定義錯誤模式設置為 on。 此時,您可以將屬性添加到活動模式。

公共類 HomeController:控制器

{

[處理錯誤]

公共 ActionResult 聯繫人()

{

字符串味精=空;

ViewBag.Message = msg.Length;

返回視圖();

}

}

我們剛剛提到的代碼最適合上下文和異常處理需求。

這裡的屬性是為 Contact() 操作方法配置的。 進程編譯完成後,您會看到以視圖模式顯示的Error.cshtml。

這只會在發生異常時發生。 這是所有例外情況下的默認視圖。 您還可以使用此屬性來配置各種頁面以管理不同類型的異常。

雖然此屬性非常適用於錯誤處理並管理所有類型的配置,但它可能並非無處不在。 在您認為它會幫助您的應用程序的某些情況下選擇它。

該方法不支持日誌記錄異常。 它設法僅捕獲代碼 500 中的 HTTP 異常。它無法捕獲來自其他控制器的異常。 因此,它不是您可以針對所有場合和需求考慮的屬性。

從 HandleError 繼承

您甚至可以使用此方法來處理異常。 我們討論的上述方法不允許您重用組件,這可以被認為是一個缺點。

如果您必須為所有需要記錄的異常繼續編碼,您將無法正常工作。

因此,您將不得不使用此擴展程序。 它允許您從 HandleError 屬性繼承,並在特定控制器中使用它。 因此,您可以處理異常而不必過於頻繁地編寫代碼。

另請閱讀:異常處理面試問題

Application_Error 事件

Application_Error 事件是處理應用程序錯誤和管理異常的另一種方法。 這部分需要您控制 global.asax 文件中的 Application_Error 事件。

您可以針對 MVC 中的所有類型的錯誤代碼和異常處理觸發此事件,使其更易於使用,並且是處理異常的最佳方法之一。

這使用了主要的錯誤記錄方法,該方法可用於管理應用程序中未處理的所有異常。

管理 HTTP 錯誤

這裡提到的方法不能處理任何 HTTP 異常。 我們正在討論諸如“未找到文件”之類的異常以及您一定會收到的其他此類常見錯誤消息。

您需要在語法中輸入錯誤詳細信息和錯誤代碼來管理這些異常。

在發布語法之前,您需要注意作為應用程序的一部分可能會收到的所有可能的錯誤代碼和消息。

要增強您對業務線應用程序的了解並精通編程語言,請加入upGrad

通過一系列課程和一系列職業選擇,您將增加您的職業機會。

與我們的專家聯繫或與我們聯繫,以了解有關為您個性化的選項的更多信息。

報名參加世界頂尖大學的軟件工程課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

在處理 MVC 中的異常處理時,您需要確保您選擇的方法允許您記錄所有可能的錯誤。 您應該能夠重用組件並管理所有應用程序錯誤。 了解 Java 中的異常處理。

如果你想要一個方法來處理所有可能的異常,你應該選擇Global Application_Error方法。 它確保與 <CustomErrors> 一起記錄所有錯誤,並確保將它們記錄在 Web.Config 中。

使用此方法,用戶在遇到錯誤時會被重定向到特定頁面。 異常處理是使用 ASP.Net MVC 進行應用程序開發的核心概念之一。

我們希望這篇文章對了解MVC 中的異常處理有所幫助; 請瀏覽我們的博客以了解有關不同應用程序的更多信息。

如果您有興趣了解有關全棧開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為在職專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,以及任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

成為全棧開發人員

立即申請軟件工程碩士