该发放会引发一个ThreadAbortException异常,但不去捕获程序正常运行,也不会出错。那为什么还要这个异常呢?它是不是有什么作用呢?

解决方案 »

  1.   

    Response.End之所以可以中断所有流程,就是靠抛出异常。在高层,asp.net不会异常抛给你的程序,它自己处理了(向客户端发送301命令)。如果不抛出异常,那么这个语句后边的许多代码就会被执行到了。
      

  2.   


    try
    {
      ...
      Response.End();
      ...
    }
    catch (System.Threading.ThreadAbortException) { throw; }
    catch (Exception ex)
    {
      Response.Write("ERR:" + ex.ToString());
      Response.End();
    }
      

  3.   

         try
            {
                if (DoSomeThing())
                {
                    Response.End();
                }
                DoOtherThing();
            }
            catch (System.Threading.ThreadAbortException ex)
            {
                        }
            catch (Exception ex)
            {
                   }
    )
    如果不用catch (System.Threading.ThreadAbortException ex),就会抛"线程被中止"异常,
    如果不用catch (System.Threading.ThreadAbortException ex),而用HttpContext.Current.ApplicationInstance.CompleteRequest 代替Response.End(),则后面的DoOtherThing()还是会继续执行
      

  4.   

       try 
            { 
                if (DoSomeThing()) 
                { 
                    Response.End(); 
                } 
                DoOtherThing(); 
            } 
            catch (Exception ex) 
            { 
                  }