嵌套尝试并捕获....之前我尝试了其他if语句....但会话没有认识到它

时间:2014-03-21 19:11:29

标签: try-catch

帮助我如何做到这一点?我已将这段代码写入if .... else if语句,如下所示:

但是现在我已经尝试过试试并抓住它的错误......

public partial class MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        Label1.Text = Session["StudId"].ToString();
        try
        {
            Label1.Text = Session["FacultyFirstName"].ToString();
            try
            {
                Label1.Text = Session["AccEmployeeName"].ToString();
                try
                {
                    Label1.Text = Session["AccEmployeeName"].ToString();
                }
            } 
        }

        catch (System.NullReferenceException)
        {
            Response.Redirect("Login.aspx");
            throw;
        }
    }
}

protected void LinkButton1_Click1(object sender, EventArgs e)
{
    FormsAuthentication.SignOut();
    Response.Redirect("Login.aspx");
}

}

1 个答案:

答案 0 :(得分:0)

首先对于您的许多catch块,您没有finallytry。您需要为catch块中的每一个设置finallytry

第二次您将每个名称分配给Label1.text,这似乎是一个逻辑错误。

第三次就这样做:

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        Label1.Text = Session["StudId"].ToString();
        Label1.Text = Session["FacultyFirstName"].ToString();
        Label1.Text = Session["AccEmployeeName"].ToString();
        Label1.Text = Session["AccEmployeeName"].ToString();
    }
    catch (System.NullReferenceException)
    {
        Response.Redirect("Login.aspx");
        throw;
    }
}

请注意,您正在使用异常来控制程序流,这不是一种好的做法。此外,如果我正确理解您的代码,有很多方法可以在会话过期时将用户重定向到登录页面。请查看表单身份验证等。

一些链接: http://stackoverflow.com/questions/11988457/check-session-variable-and-redirect-to-login-page-before-page-load

http://csharpdotnetfreak.blogspot.com/2008/11/detecting-session-timeout-and-redirect.html