黑马程序员技术交流社区
标题:
关于异常捕获try-catch的一点点疑问?
[打印本页]
作者:
李承伟
时间:
2012-7-31 10:27
标题:
关于异常捕获try-catch的一点点疑问?
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image002.jpg
Console.ReadLine()
是让用户输入字符串,而当输入的语文成绩为
90
时,不会跳到
catch
里面执行,当输入的比如
90b
时,就跳到
catch
中执行,提示输入有错误,我所不解的就是为什么会这样?是不是由
Console.ReadLine()
前面的
ToInt
进行一个判断,是不是符合我所要输入的?
作者:
李承伟
时间:
2012-7-31 10:31
抱歉,截图:
未命名.jpg
(55.63 KB, 下载次数: 339)
下载附件
2012-7-31 10:31 上传
作者:
许庭洲
时间:
2012-7-31 10:38
本帖最后由 许庭洲 于 2012-7-31 10:39 编辑
程序发生异常是由于用户输入了非法的数据,由于该数据不是int类型的,90b是混合类型,函数Convert.ToInt32(90b)没法将90b转化为整型数据,程序会抛出异常;
作者:
蔡尚猛
时间:
2012-7-31 10:39
catch是扑捉异常的,Toint()是转化类型的,当你被转的字符含有特殊字符,Toint()就不能转了,由于Toint()没有处理异常的功能,所以就会报错,导致程序终止,但是使用try{}catch{}就会扑捉异常,不会导致程序终止,
像你这种情况推荐使用TryParse()尝试转化,如果转化失败就返回false,成功转化返回true;
作者:
唐兰文
时间:
2012-7-31 11:03
上面回答差不多了,我补充一点:
Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:
Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。
Convert.ToInt32 参数为 "" 时,抛出异常;
int.Parse 参数为 "" 时,抛出异常。
Convert.ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
作者:
王志波
时间:
2012-7-31 11:09
你输入的是一个字符串是吧,convert.toint是把你输入的字符串转换为一个整型的数据,转换失败就会报错,就会被catch抓住。如果使用int.tryparse应该就不会报错了吧,你试试。
作者:
ARMdong
时间:
2012-7-31 12:08
Convert.ToInt32(Console.WriteLine()),当输入的字符串含有字母或者不能被转换成Int32整数时,就会抛出异常,进入catch代码段。
作者:
刘玉
时间:
2012-7-31 12:13
转换失败当然异常了
作者:
王峰
时间:
2012-7-31 16:55
catch是用来异常捕获啊,当字符串不能被转换成Int32整数时,就会抛出异常,既然出现异常,当然要进入进入catch代码段进行异常处理了,,,
作者:
肖攀
时间:
2012-7-31 17:35
感觉这样的问题最好还是用int.Parse (),try {}catch{ }是在可能产生无法预知的错误时才用的,视频里也是建议少用try catch的
作者:
郭正续
时间:
2012-7-31 18:43
建议你试试int.TryParse()去试着转换,这个比Convert.ToInt32好用一点
作者:
李宏利
时间:
2012-8-1 13:31
Convert.ToInt32(字符串) 字符串要为数字格式,否则就会抛出异常,执行catch语句。
作者:
彭书雄
时间:
2012-8-1 15:07
捕获异常是为了方式用户恶意的使用不规范的代码导致程序的崩溃和错误的添加引起的数据库混乱,
例如 你想要输入 年龄 你输入的是36 但是用户偏偏输一些 非整形数字之类的 如a68 这样的数据添加到数据库中会非常的麻烦
所以在一些敏感的数据转换 前 考虑好转换的安全性 实时的添加一些try catch对象捕获异常
作者:
张寅平
时间:
2012-8-1 15:27
Convert.ToInt32()会把输入的数据转换成32位整型,如果转换失败,就会抛出异常。
作者:
赵令
时间:
2012-8-1 19:13
90b不是所要求的数据类型 故而转换失败
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2