try-catch的小讨论

类别:.NET开发 点击:0 评论:0 推荐:

最近发现try跳转的小问题,如下
private void Page_Load(object sender, System.EventArgs e)
 {

  Uri Baseurl=Request.UrlReferrer;
  if(Request.Form["UserName"]==null || Request.Form["Pass"]==null)
  {
   Panellogin.Visible=false;
   Panellogout.Visible=true;
  }
  else
  {
   string User=Request.Form["UserName"].ToString();
   string Pass=Request.Form["Pass"].ToString();
   STUWeb.localhost.Servicestu ws = new STUWeb.localhost.Servicestu();
   ws.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
   dsSTU.Merge(ws.GetSTU(User));
   try
   {
    if(Pass==dsSTU.STU.Rows[0]["Ping"].ToString().Trim())
    {
     DataGrid1.DataBind();
     Label1.Text+="用户的信息如下:";
     Panellogin.Visible=true;
     Panellogout.Visible=false;
    }
    ///<summary>
    ///关于try的跳转问题
    ///下面代码将触发一个error,但是ex的信息为空
    ///不论条件如何,else得不到响应
    ///else满足的情况下,将执行catch的代码
    ///故使用finally
    ///原因:
    ///可能是try没有执行完,跳转时,引发unload_Page,此时catch起作用
    ///</summary>
    //else
    //{
    // Response.Redirect("/STUWeb/login.aspx?id=2&User="+User);
    //}
   }
   catch(Exception ex)
   {
    Response.Redirect("/STUweb/login.aspx?id=1");
   }
   finally
   {
    if(Pass!=dsSTU.STU.Rows[0]["Ping"].ToString().Trim())
    {
     Response.Redirect("/STUWeb/login.aspx?id=2&User="+User);
    }
   }
  }
 }
呵呵,是我初出茅庐不怕虎啊,什么都敢乱用,都不晓得

Response.Redirect会引发一个线程正在被中止的异常

本文地址:http://com.8s8s.com/it/it42530.htm