在调用Integer.parseInt之前,应该检查一个字符串是否为空?

时间:2018-06-06 12:53:48

标签: java

在一个循环中,数以千计的项目从String转换为int,在调用Integer.parseInt之前应该检查字符串是否为空,还是应该直接依赖NumberFormatException移动到下一个?

3 个答案:

答案 0 :(得分:4)

如果您的数据中的空字符串例外(即它应该),则接受的做法是不检查它们,只是让异常系统处理它。

如果可以使用空字符串(即使很少)并且意味着什么(例如"" - > "0"),那么应该检查。

底线是你不应该使用例外来控制程序流程

答案 1 :(得分:1)

嗯,一切都取决于:

  1. 如果源集合中的每个字符串在解析时都应该是一个有效的整数,那么我说不要检查它是否为空,因为它可能最终会隐藏一个错误。
  2. 如果您希望某些字符串为空而其他字符串为有效整数,那么您需要在解析为整数之前检查它是否为空,否则您将获得异常。
  3. 如果源集合既包含有效整数,又包含无法解析为整数的字符串,那么在解析字符串之前,您需要执行一些验证。

答案 2 :(得分:1)

无论如何你必须抓住NumberFormatException,所以添加一个额外的检查只会添加更多代码,读者必须通过这些代码才能获得功能。

(我假设你的问题想要在任何情况下检查它是否无效,而不只是检查它是否为空。如果你只想检查它是否为空,而不是它是否通常无效,那么显然只是使用isEmpty()并且根本不会抓到任何东西!)

是的,异常通常不应该用于控制流 - 但是捕获NumberFormatException以检查字符串是否有效int是一个相当容易理解的例外情况。