首页 文章

Catch Null值在字符串数组中使用Foreach语句错误[关闭]

提问于
浏览
0
public void GrantAccesOnPage(int AccessPoint1, int AccessPoint2) 
        {
            GlobalVariables.GrantDeny = 0;
            string[] arr = { 
                               GlobalVariables.SessionPort1, 
                               GlobalVariables.SessionPort2, 
                               GlobalVariables.SessionPort3, 
                               GlobalVariables.SessionPort4 
                           };
            foreach (var r in arr)
            {
                if (Convert.ToInt32(r) == AccessPoint1 || Convert.ToInt32(r) == AccessPoint2)
                {
                    if (!string.IsNullOrEmpty(r.ToString()))
                    {
                        GlobalVariables.GrantDeny = 1;
                    }
                    else 
                    {
                        throw new System.ArgumentException("Null");
                    }
                }
            }
            if (GlobalVariables.GrantDeny != 1)
            {
                Response.Redirect("PageNotAccessable.aspx");
            }
        }

我尝试将我的“r”foreach语句中的每个“Var”转换为字符串或int但仍然没有捕获空值,尝试抛出异常也不会跳过它的null它会使页面停止进入错误视图 . 请帮忙..

1 回答

  • 1

    你应该先检查IsNull:

    public void GrantAccesOnPage(int AccessPoint1, int AccessPoint2) 
            {
                GlobalVariables.GrantDeny = 0;
                string[] arr = { 
                                   GlobalVariables.SessionPort1, 
                                   GlobalVariables.SessionPort2, 
                                   GlobalVariables.SessionPort3, 
                                   GlobalVariables.SessionPort4 
                               };
                foreach (var r in arr)
                {
                    if (string.IsNullOrEmpty(r))
                    {
                        //remove the comment out only if you want to throw the exception. 
                        //throw new System.ArgumentException("Null");  
                    }
                    else
                    {    
                       if (Convert.ToInt32(r) == AccessPoint1 || Convert.ToInt32(r) == AccessPoint2)
                       {
                            GlobalVariables.GrantDeny = 1;                    
                       }
                    }
                }
                if (GlobalVariables.GrantDeny != 1)
                {
                   Response.Redirect("PageNotAccessable.aspx");
                }
            }
    

相关问题