以下代码会转到 bbb.aspx ,希望各位解释一下原因。Try
    Response.Redirect("aaa.aspx")
    Exit Try
Catch ex As Exception
    Response.Redirect("bbb.aspx")
End Try

解决方案 »

  1.   

    Response.Redirect只是转向,但不具备停止的功能.也就是说它后面的代码仍被继续执行.
      

  2.   

    楼上的解释不对。
    Response.Redirect("aaa.aspx",false)才会继续执行后面的操作,再说,如果没有出错,也不会执行。Response.Redirect("bbb.aspx")。Response.Redirect("aaa.aspx")肯定是出错才会执行bbb.aspx.
    要么aaa.aspx不存在,要么是在服务器端用户aaa.aspx就出错了。
      

  3.   

    不好意思,viena占了我的二楼。我说的是一楼的解释不对
      

  4.   

    楼上的意思是Response.Redirect("aaa.aspx")会导致异常,但如果只留这一句而将其它的几句都删掉,执行时并不出现异常,而且可以正常转到aaa.aspx,即使aaa.aspx不存在。另外代码中还有 Exit Try 强行退出的。
      

  5.   

    Try
        Response.Redirect("aaa.aspx")
        Response.End()
        Exit Try
    Catch ex As Exception
        Response.Redirect("bbb.aspx")
    End Try
    就会跳转到aaa.aspx
      

  6.   

    Try
        Response.Redirect("aaa.aspx")
        return
    Catch ex As Exception
        Response.Redirect("bbb.aspx")
    End Try
    用Return就可以拉
      

  7.   

    但如果只留这一句而将其它的几句都删掉,执行时并不出现异常,而且可以正常转到aaa.aspx,即使aaa.aspx不存在。
    ----------------
    不会吧,这么强,页面不存在都不会报错????
      

  8.   

    Try
                Response.Redirect("http://www.hao123.com", False)
                'Exit Try
            Catch ex As Exception
                'Response.Write(ex.Message)
                Response.Redirect("http://www.cnblogs.com")
            End Try
      

  9.   

    核对了一下MSDN,感谢MyLf(不睡觉的鱼)的提醒 
    调用 Redirect 等效于在将第二个参数设置为 true 的情况下调用 Redirect。
      

  10.   

    Redirect 调用 End,该方法在完成时引发 ThreadAbortException 异常。
      

  11.   

    Response.End()try 就没有意义了就是以因为到 aaa.aspx 有异常,所以抛出异常执行了 bbb.aspx
      

  12.   

    问题已经解决!感谢各位!ghchen 回答正确!!!我来总结一下:
    ·Redirect 调用 End,该方法在完成时引发 ThreadAbortException 异常。
    ·对 End、Redirect 和 Transfer 的调用在当前响应提前结束时引发一个ThreadAbortException异常。所以说 Response.Redirect("aaa.aspx") 这一句确实是引发了异常,导致程序执行了下面的语句,和Redirect的第二个参数没关系。但 ThreadAbortException 是个特殊的异常,也就是说,当不捕获它时程序并不会终止。
    MyLf(不睡觉的鱼):我所说的即使aaa.aspx不存在也可以正常转向的意思是,.Net在执行Redirect时并不检查转向的地址是否存在。