用户需要在文本框中插入几个数字,除以“,”。现在,如果他做错了什么(例如,如果他写了1;2,3),我想抛出一个异常。
string perm = this.tbxPerm.Text;
string[] elPerm = this.perm.Split(',');请建议我如何使用这里的尝试捕捉块。
发布于 2013-11-10 12:32:13
与其在遇到坏数据时抛出异常,不如验证它,如果它不符合您的批评要求,就拒绝它。考虑下面的函数来检测字符串中的无效字符。
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-10 12:21:05
使用linq:
string perm = this.tbxPerm.Text;
if(perm.Any(c=> !char.IsDigit(c) && c != ','))
throw new Exception("Wrong input");发布于 2013-11-10 12:22:38
您可以使用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");
}https://stackoverflow.com/questions/19889586
复制相似问题