首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本框获取数据时捕获异常

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

Stack Overflow用户
提问于 2013-11-10 12:16:19
回答 3查看 162关注 0票数 1

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

代码语言:javascript
复制
string perm = this.tbxPerm.Text;
string[] elPerm = this.perm.Split(',');

请建议我如何使用这里的尝试捕捉块。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-10 12:32:13

与其在遇到坏数据时抛出异常,不如验证它,如果它不符合您的批评要求,就拒绝它。考虑下面的函数来检测字符串中的无效字符。

代码语言:javascript
复制
    public bool CheckString(string str)
    {
            char[] badChars = new char[] { '#', '$', '!', '@', '%', '_', ';' }; 

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

            return true;
    }

用法可能类似于:

代码语言:javascript
复制
        string perm = this.tbxPerm.Text

           if (!CheckString(perm))
           { 
           System.Windows.Forms.MessageBox.Show(perm + " is invalid, please try again");
           }
票数 2
EN

Stack Overflow用户

发布于 2013-11-10 12:21:05

使用linq:

代码语言:javascript
复制
string perm = this.tbxPerm.Text;

if(perm.Any(c=> !char.IsDigit(c) && c != ','))
   throw new Exception("Wrong input");
票数 1
EN

Stack Overflow用户

发布于 2013-11-10 12:22:38

您可以使用TryParse()函数来检查转换是否有效。

如果转换成功,TryParse()函数将返回true,否则返回false

代码语言:javascript
复制
            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");
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19889586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档