1

用户需要在文本框中插入几个数字,用“,”分隔。现在,如果他做错了什么(例如,如果他写了 1;2,3),我想抛出一个异常。

string perm = this.tbxPerm.Text;
string[] elPerm = this.perm.Split(',');

请在这里建议我如何使用 try catch 块。

4

3 回答 3

2

而不是在遇到错误数据时抛出异常,您可以验证它并在它不符合您的条件时拒绝它。考虑以下用于检测字符串中的无效字符的函数。

    public bool CheckString(string str)
    {
            char[] badChars = new char[] { '#', '$', '!', '@', '%', '_', ';' }; 

            foreach (char bad in badChars)
            {
                if (str.Contains(bad))
                    return false;
            }

            return true;
    }

用法可能类似于:

        string perm = this.tbxPerm.Text

           if (!CheckString(perm))
           { 
           System.Windows.Forms.MessageBox.Show(perm + " is invalid, please try again");
           }
于 2013-11-10T12:32:13.190 回答
1

您可以使用TryParse()函数来检查转换是否有效。
TryParse()如果转换成功,函数将返回true,否则返回false

            string perm = this.tbxPerm.Text;
            string[] elPerm = perm.Split(',');
            int num;
            for (int i = 0; i < elPerm.Length; i++)
            {
                if(!int.TryParse(elPerm[i],out num))
                throw new Exception("Invalid Data Found");
            }
于 2013-11-10T12:22:38.887 回答
1

使用 linq:

string perm = this.tbxPerm.Text;

if(perm.Any(c=> !char.IsDigit(c) && c != ','))
   throw new Exception("Wrong input");
于 2013-11-10T12:21:05.930 回答