C# 从文本框获取数据时捕获异常

C# 从文本框获取数据时捕获异常,c#,try-catch,C#,Try Catch,用户需要在文本框中插入一些数字,以“,”分隔。现在,如果他做错了什么,我想抛出一个异常,例如,如果他写了1;2,3 string perm = this.tbxPerm.Text; string[] elPerm = this.perm.Split(','); 请建议我如何使用此处的try-catch块。使用linq: string perm = this.tbxPerm.Text; if(perm.Any(c=> !char.IsDigit(c) && c != ',

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

string perm = this.tbxPerm.Text;
string[] elPerm = this.perm.Split(',');
请建议我如何使用此处的try-catch块。

使用linq:

string perm = this.tbxPerm.Text;

if(perm.Any(c=> !char.IsDigit(c) && c != ','))
   throw new Exception("Wrong input");
使用linq:

string perm = this.tbxPerm.Text;

if(perm.Any(c=> !char.IsDigit(c) && c != ','))
   throw new Exception("Wrong input");
您可以使用TryParse函数检查转换是否工作。 如果转换成功,TryParse函数将返回true,否则返回false

您可以使用TryParse函数检查转换是否工作。 如果转换成功,TryParse函数将返回true,否则返回false


当你遇到坏数据时,你可以验证它,如果它不符合你的要求,就拒绝它,而不是抛出异常。。考虑下面的函数来检测字符串中的无效字符。
    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");
           }

当你遇到坏数据时,你可以验证它,如果它不符合你的要求,就拒绝它,而不是抛出异常。。考虑下面的函数来检测字符串中的无效字符。
    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");
           }

为什么使用Try。。。挡块?只要测试有效的输入,如果不符合你的标准就拒绝。我已经编辑了你的标题。请看,如果共识是否定的,他们就不应该。好的,约翰,下次我会更小心的为什么要用Try。。。挡块?只要测试有效的输入,如果不符合你的标准就拒绝。我已经编辑了你的标题。请看,如果共识是否定的,他们就不应该这样。好的,约翰,下次我会更小心的