int.parse的出错异常处理

问题的起因是这样的:在完成一个闰年判断的程序的时候,任务是对输入的字符串进行转换从而得到了int类型的年份,从而进行判断;然而,若输入超出int类型范围或者奇葩内容时,int.parse()进行转换时便会弹出exception...所以,这回的任务就是处理exception或者在不规范输入时不弹出异常。

嗯...看到这个作业,第一步想到的就是对int.parse()进行异常处理,把弹出的exceptions catch一下。代码大概是如下这个样子:

try
{
  int year = int.Parse(str);
}
catch (Exception)
{

  system.out.println("wrong input!");
  return 0;
}

然后我发现...作业做完了...感觉也太easy了吧!出于好奇,嗯,我查找了一下网上关于int.parse()的出错处理。很快,我认识了另一个函数!

int.TryParse(val, out intval);

这个函数简直良心,因为它不会弹出exception,并且在转换成功的时候返回特定值,出现exception是返回val。对比一下上面的函数,这个还是很简洁高效的!

那么,问题来了!要int.parse()来干什么呢(既然它总是会跳出exception)?!

在浏览完众多大神们的帖子之后,我得到了一个小小的结论:

tryparse确实更常用,因为它不会弹出exception。但是在有些时候parse比tryparse更好用。因为有些时候必须要确保得到的字符串在int的取值范围内,比如之前得到的某个int类型的数据在存入数据库之后要再取出进行使用,往往这样可以保证得到的数据在int类型的取值范围之内,这时就直接使用parse,这样如果再弹出exception,就是自身代码中的逻辑错误问题,而非输入数据的问题,方便进行代码的修改。

总的来说,这样的用法对于测试及发现代码错误是非常有帮助的!(一不小心又学到了新知识!)

时间: 2024-08-08 09:54:29

int.parse的出错异常处理的相关文章

关于 int.parse("abcd") 出错的问题分析及解决方案

问题分析: 首先,int.Parse()是一种类容转换,表示将数字内容的字符串转为int类型.该函数要求被操作的字符串由数字组成,因此存在三种可能的输入异常情况: 1. 如果字符串为空,则抛出ArgumentNullException异常: 2. 如果字符串内容不是数字,则抛出FormatException异常: 3. 如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常: 所以 int.parse("abcd") 出错原因在于字符串的内容不

c#中的类型转换,int.parse("ab")为什么会出错

一.问题 在一个简单的闰年问题的判断中,输入框获取的字符串,我们希望输入数字字符串,将字符串转换为int整数进行判断.编写程序如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks

Int.Parse与ConvertToInt的区别

最近在公司做一个项目的时候,在某次 跟组长讨论的时候.对一个简单的线发生了一些讨论.感觉挺有收获的.现在来总结一下. 在代码开发的时候,底层代码,不要写try-catch.因为写异常处理之后,代码的执行效率会大大的降低.底层的代码,不写异常,但是要经过严格的测试,确保正确.而对于界面层来说,必须接收异常.程序崩溃是非常不友好的.而且也降低了用户对你程序的信任. 对几个小问题的整理: 1.try-catch是否影响效率 自己简单测试了一下,感觉不到效率有什么变化. 然后查找一系列相关博客.发现了一

C#的(int) /int.Parse()/int.TryParse()/Convent.ToInt32()的区别--推荐使用Int.TryParse()

一.(int)变量名[强制类型转换]:  该转换方式主要用于数字类型转换,从int类型到long,float,double,decimal类型,可以使用隐式转换,但是从long类型到int类型就需要使用显式转换,也就是该数据类型转换方式,否则会产生编译错误. 该方式对于浮点数会做无条件舍去,失去精确度.当然,该方式也可以进行object到int得转换,但是,object的值要赋予int类型的值,否则会产生编译错误,而且object为null时也会出错.最后切忌的一点,千万不要用来处理char类型

[软件测试学习]考虑到测试的代码编写/int.parse的非法输入—由一个简单的c#闰年检测程序说起

一个简单的C#的闰年检测程序 1.闰年检测的函数编写 当提起检测平年闰年时候,第一反应写出的代码 1 public static bool isLeapYear(int year){ 2 return ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)) 3 } 但是这个并不易于测试和出现错后的修改,更改代码如下 1 public static bool isLeapYear(int year){ 2 bool check = ne

软件测试技术(四)——闰年判断器+ int.Parse错误如何解决

目标程序 本次所测试的目标程序是一个闰年判断器,我们知道,一般情况下年份被4整除就可以了,但是如果遇到百年的时候还需要被400整除,于是有了如下的逻辑判断: bool isRunNian = false; if (year > 0) { if ((year % 100 == 0 && year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) { isRunNian = true; } } 测试方法介绍—Syntax

C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为整型(int)来讲,有四种方法:分别为(int).int.Parse().int.TryParse()和Convert.ToInt32(),那么这四种方法对被转换对象有什么限制,以及各自之间有什么区别呢?相信很多童鞋也不能完全说清楚. 下面从被转换对象说起,在我们实际开发项目的过程中,我们碰到需要被转换的类型大概有3大类,分别是空值(NULL).数字类型(包含float,double,int,long等)和字符串(

C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别 <转>

作者:Statmoon 出处:http://leolis.cnblogs.com/ 在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为整型(int)来讲,有四种方法:分别为(int).int.Parse().int.TryParse()和Convert.ToInt32(),那么这四种方法对被转换对象有什么限制,以及各自之间有什么区别呢?相信很多童鞋也不能完全说清楚. 下面从被转换对象说起,在我们实际开发项目的过程中,我们碰到需要被转换的类型大概有3大类,分别是空值

int.Parse()、int.TryParse()和Convert.ToInt32()的区别

1:int.Parse(一个参数)        此参数必须满足: 1 只能是字符串: 2 只能是 “整型” 字符串,即各种整型ToString()之后的形式,也不能为浮点型. 2:int.TryParse(参数a,参数b); 此方法可以看做是int.Parse()方法的升级,即做了一个异常处理,如果出现异常则返回false,并且将输出参数返回0: 注意,参数a, 也必须是字符串或null即可 例如: int b; int.TryParse("54.1",out b); Respons