对于parseInt(String )的NumberFormatException如何进行更细的捕获

light_sky 2012-12-06 03:15:23
使用Integer.parseInt(String str)时,在很多情况下都会抛出NumberException,当我想知道是因为
参数超过了Integer.MAX_VALUE或者Integer.MIN_VALUE的原因,还是由于输入了非法的字符出现的异常
应该如何捕获呢?请各位帮忙看看,十分谢谢
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
light_sky 2012-12-06
  • 打赏
  • 举报
回复
引用 5 楼 raistlic 的回复:
引用 2 楼 xushuaic 的回复:引用 1 楼 a454344407 的回复:自定义异常类不就完了吗 问题解决了,是用一个大于int类型的数去接收parseInt的结果number,然后判断number是否在 Integer.MAX_VALUE或者Integer.MIN_VALUE区间之内,然后抛出自定义越界异常,不过对于这个 接收number的类型是否应……
非常感谢,比我的解决方案好多了。
raistlic 2012-12-06
  • 打赏
  • 举报
回复
引用 2 楼 xushuaic 的回复:
引用 1 楼 a454344407 的回复:自定义异常类不就完了吗 问题解决了,是用一个大于int类型的数去接收parseInt的结果number,然后判断number是否在 Integer.MAX_VALUE或者Integer.MIN_VALUE区间之内,然后抛出自定义越界异常,不过对于这个 接收number的类型是否应该越大越好呢?我定义为double
可以用 BigInteger 类:


BigInteger max = BigInteger.valueOf(Integer.MAX_VALUE);
BigInteger min = BigInteger.valueOf(Integer.MIN_VALUE);

BigInteger number = new BigInteger("1234567890");

boolean outOfRange = number.compareTo(max) > 0 || number.compareTo(min) < 0;

hu_xinxin 2012-12-06
  • 打赏
  • 举报
回复
一个是NumberFormatException的异常是str中不能编译成int类型。而另一个是越界的Exception,你一看就知道了。希望能够帮到你
light_sky 2012-12-06
  • 打赏
  • 举报
回复
上面表述有误,定义了一个double类型的数据,不是使用Integer.parseInt(String)了,而是使用了Double.parseDouble(String)
light_sky 2012-12-06
  • 打赏
  • 举报
回复
引用 1 楼 a454344407 的回复:
自定义异常类不就完了吗
问题解决了,是用一个大于int类型的数去接收parseInt的结果number,然后判断number是否在 Integer.MAX_VALUE或者Integer.MIN_VALUE区间之内,然后抛出自定义越界异常,不过对于这个 接收number的类型是否应该越大越好呢?我定义为double
Geek41 2012-12-06
  • 打赏
  • 举报
回复
自定义异常类不就完了吗

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧