用户需要在文本框中插入几个数字,用“,”分隔。现在,如果他做错了什么(例如,如果他写了 1;2,3),我想抛出一个异常。
string perm = this.tbxPerm.Text;
string[] elPerm = this.perm.Split(',');
请在这里建议我如何使用 try catch 块。
而不是在遇到错误数据时抛出异常,您可以验证它并在它不符合您的条件时拒绝它。考虑以下用于检测字符串中的无效字符的函数。
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");
}
您可以使用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");
}
使用 linq:
string perm = this.tbxPerm.Text;
if(perm.Any(c=> !char.IsDigit(c) && c != ','))
throw new Exception("Wrong input");