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 校友身份、实用的实践顶点项目和顶级公司的工作协助。

成为全栈开发人员

立即申请软件工程硕士