我刚刚开始使用ASP.Net。我复制了一个前同事的代码(来自.net 1.1时代),如果发生错误,它的编号为Response.End();
。还有一个:我是否需要ASP.Net 2.0中的Response.End()
catch (Exception ex)
{
Response.Write(ex.Message);
Response.End();
}
在Page_Load(object sender, System.EventArgs e)
到底哪总是附加"Thread was aborted."
或类似的东西在最后。我怀疑之前的工作方式不同,或者错误条件未得到很好的测试。
无论如何,我能够在不喜欢GET
参数的情况下停止使用Response.End();
,并且使用return;
代替。这似乎是在一个简单的案例中进行正确的思考。
这是一般的吗?
有一些问题,我复制的代码,但我不想做一个重写;我只想让它先运行并稍后找到皱纹。 Response.End();
对我造成了精神障碍,所以我想弄明白。
我想保持包罗万象的条款,以防万一,至少现在是这样。我也可以结束法:
catch (System.Threading.ThreadAbortException)
{
Response.End();
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.End();
}
但这似乎只是愚蠢至极,一旦你想想所有的异常的产生。
请给我几句智慧。随意询问是否有不清楚的地方。谢谢!
P.S.以前的同事并没有被解雇,而且是一个很好的编码员 - 再次重用他的例子的另一个理由。
它可能不会起作用,但是......它的确如此!另外,使用'Request.Flush();'和'return;'结合起来怎么样? – 2010-04-20 17:15:29
对不起 - 我应该澄清。这将捕获异常,所以代码将做你想做的。但它不会抑制异常 - 它仍会传播到任何更高级别的异常处理,甚至更多。 使用Response.Flush()将简单地发送已写入响应流到浏览器的任何输出。只要请求完成处理就完成了,所以除非你有一个长时间的运行过程,否则没有多少意义。在某些情况下,如果您过早调用flush,它也可能会使某些ajax操作和会话创建变得复杂。 – womp 2010-04-20 17:31:55
现在它变得更有意义。谢谢! – 2010-04-20 17:41:20