【问题标题】: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() 将停止执行,但请确保您也在释放您的数据库对象。