【问题标题】:Throwing exceptions and notifying the user抛出异常并通知用户
【发布时间】:2012-04-22 17:21:18
【问题描述】:

我最近加入了一个正在进行中的 asp.net mvc 项目,该项目在处理控制器中的异常方面没有太多一致性;一些开发人员将数据返回给客户端,让用户知道出了什么问题,而其他开发人员则将它们返回给处理和记录它们的服务器级处理程序——而不让用户知道发生了什么。

在我看来,这两种方法本身都是错误的,需要相互补充;我坚持的是如何做到这一点。我假设最终的异常处理程序/记录器可以在捕捉到特别讨厌的东西时将用户重定向到错误网页,但这将机制限制为仅严重的东西。

我正在寻找一种在捕获异常时同时执行“抛出”和“返回...”的方法,因此我对其进行排序和记录服务器端并获取数据客户端我告诉用户有一个小问题。

我在 asp.net 方面的专业知识非常有限,虽然我相信我对 mvc 的了解足以让它不会成为问题,但这是一种“最佳实践是什么?”与不太关心最佳实践的人一起工作的人提出的问题。

【问题讨论】:

  • 您独自担心这一点的事实使您成为团队的一个很好的补充。但请确保你让你的队友也看到这一点的重要性,否则你将是唯一一个试图让事情变得更好的人,而其他人却不断地打破它。
  • 我同意马里奥的观点。解决您对团队的担忧很重要。如果您觉得自己有更好的方法来处理异常,请与您的团队分享,因为从长远来看,这将改善产品。与他们进行随意的讨论也可能会揭示他们的思维过程以及您可能忽略的事情。

标签: c# asp.net exception-handling


【解决方案1】:

有一个名为 Elmah 的好项目,用于记录 ASP.NET 应用程序中的错误和异常。你可以找到它here

ELMAH(错误记录模块和处理程序)是一个应用程序范围的 完全可插拔的错误记录工具。有可能 动态添加到正在运行的 ASP.NET Web 应用程序,甚至所有 一台机器上的 ASP.NET Web 应用程序,无需任何 重新编译或重新部署。

一旦将 ELMAH 放入正在运行的 Web 应用程序中,并且 适当配置,您将获得以下设施,而无需 更改一行代码:

  • 记录几乎所有未处理的异常。
  • 远程网页 查看重新编码的异常的整个日志。
  • 远程查看的网页 任何记录的异常的完整详细信息,包括彩色堆栈 痕迹。
  • 很多情况下,可以查看原黄屏 ASP.NET 为给定异常生成的死亡,即使是 customErrors 模式已关闭。
  • 每个错误的电子邮件通知 它发生的时间。
  • 日志中最近 15 个错误的 RSS 提要。

【讨论】:

    【解决方案2】:

    我正在开发的 MVC 应用程序实现了 Global.asax 中的 Application_Error 来处理应用程序抛出的异常,然后将用户重定向到标准错误页面。错误页面的控制器处理日志记录并显示有关错误的足够信息,以允许支持人员在系统中找到他们的会话并帮助解决任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多