【问题标题】:Replace try...catch block in c#在 C# 中替换 try...catch 块
【发布时间】:2015-03-11 09:14:11
【问题描述】:

除了使用 try...catch 块进行异常处理和进一步记录之外,是否还有其他可能性/代码。 我们正在开发一个带有几个屏幕的 Web 应用程序。客户要求我们不要在每个函数/方法中放置 try...catch 块来处理错误。请提出建议。

谢谢

【问题讨论】:

  • 您的客户是否有不想要try 块的原因?我想不出其他方法来处理错误。
  • 嗯,不,你不会把它放在每个方法中。您通常应该有更集中的异常处理 - 而 ASP.NET 通常会为您执行此操作,允许您注册错误页面。这实际上取决于您要处理的异常,以及如果它们发生时您要尝试做什么。 (例如,如果您正在发出 Web 服务请求并想要重试,您可能希望在某处尝试/捕获,以阻止整个网页请求失败......)
  • 很有可能您的客户非常担心您的程序中的错误会成为他的问题而不是您的问题。他是对的,在每种方法中尝试/捕获都是非常非常糟糕的做法。

标签: c# exception web exception-handling


【解决方案1】:

我们正在开发一个带有几个屏幕的 Web 应用程序

虽然您客户的要求对我来说没有多大意义,但您可以使用 global.asax 中的Application_Error 事件处理未处理的异常

void Application_Error(object sender, EventArgs e)
{
     //Your logging code goes here
}

How to: Handle Application-Level Errors

此代码示例展示了如何在 Global.asax 文件,它将捕获所有未处理的 ASP.NET 错误,同时 处理一个请求——换句话说,所有不是 使用 Try/Catch 块或页面级错误处理程序捕获。在里面 例如,处理程序将控制权转移到一个名为 GenericErrorPage.aspx,解释错误并显示 适当的消息。

作为 WinForms 或 Window Services 等桌面应用程序的附加说明,您可以使用 AppDomain.CurrentDomain.UnhandledExceptionApplication.ThreadException 等。

【讨论】:

    【解决方案2】:

    你可以在 global.asax 中使用 Application_Error,这个方法处理应用程序中所有页面的错误。

    对于特定页面例如default.aspx,可以实现Page_Error

    【讨论】:

    • C#应用不只是Web应用,global.asax只用在Web应用中。
    • 由于@Yogesh 正在开发一个Web 应用程序,我认为这将解决他的问题
    猜你喜欢
    • 2019-12-04
    • 2020-04-02
    • 2011-08-22
    • 2011-03-22
    • 2010-10-31
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多