【问题标题】:Stop Processing Page After Exception Is Caught捕获异常后停止处理页面
【发布时间】:2014-05-06 15:38:14
【问题描述】:

TL;DR

在 C#/ASP.NET 中,如何在捕获到异常后停止处理页面?

详情

我有四个 try/catch 块尝试从 MS SQL 数据库中提取数据,并且我创建了一个 ThrowException() 方法来处理异常。在那个方法中,我将异常文本写入数据库表,所以我想我应该在那里有一个 try/catch,然后在屏幕上写出 that 异常(显然发生了可怕的事情如果我们到达这里)。但是我在屏幕上看到了这个文本的四个副本;如何在一次调用 catch 块后停止处理页面?

【问题讨论】:

    标签: c# asp.net exception-handling


    【解决方案1】:

    HttpApplication.CompleteRequest(参见MSDN)是结束请求的推荐方式。与HttpResponse.End 不同,它不会抛出ThreadAbortException

    【讨论】:

      【解决方案2】:

      假设您可以在异常处理程序中获取HttpResponse 对象,您可以清除/刷新响应数据,然后写入您的错误,然后再写入HttpResponse.End() 以终止进一步的执行。

      获取回复的一种方法是HttpContext.Current.Response

      请注意,HttpResponse.End() 使用异常来进行流控制,这在某种程度上是一种反模式。但是,它应该适合您的情况。

      【讨论】:

        【解决方案3】:

        Response.End() 将停止执行,但请确保您也在释放您的数据库对象。

        【讨论】:

          猜你喜欢
          • 2010-12-11
          • 1970-01-01
          • 1970-01-01
          • 2011-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-25
          • 1970-01-01
          相关资源
          最近更新 更多