当前位置: 首页 > 知识库问答 >
问题:

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

冀崇凛
2023-03-14

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

共有3个答案

班承恩
2023-03-14

这取决于:

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

无论如何,您都必须捕获NumberFormatException,因此添加额外的检查只会增加阅读器必须涉足的更多代码,而没有任何功能优势。

(我假设从这个问题来看,您确实想检查它在任何情况下是否无效,而不仅仅是检查它是否为空。如果您只想检查它是否为空,而不是它是否通常无效,那么很明显,只需使用isEmpty(),并且根本不捕获任何内容!)

是的,异常通常不应用于控制流,但捕获数字格式异常(NumberFormatException)以检查字符串是否为有效的int,这是对该规则的合理理解的异常。

荀嘉熙
2023-03-14

如果空字符串是数据中的异常(即不应该发生),那么可以接受的做法是不检查它们,只让异常系统处理它。

如果空字符串是可能的(即使很少),并且可能意味着什么(例如,“”-

底线是您不应该使用异常来控制程序流。

 类似资料:
  • 问题内容: 我有一个isNotEmpty函数,如果字符串不为空,则返回true;如果字符串为空,则返回false。我发现如果我通过它传递一个空字符串,它将无法正常工作。 使用isNotEmpty验证字符串: 如果该字符串为空,则其他字符串将不会执行,我不明白为什么,请有人对此有所帮助。 问题答案: 实际上是简单的问题。更改: 至 可以说,您可能还想将其更改为: 因为如果您传递的是数字0以及其他一些

  • 问题内容: JavaScript中是否可以检查字符串是否为URL? 正则表达式被排除在外,因为URL的写法很像;也就是说,它可能没有,或者。 问题答案: 与答案相关的问题: 或来自Devshed的此正则表达式:

  • 问题内容: 假设我有一个包含一些字母和标点符号的String数组 在字母[3]中,我们带有“。” 如何检查字符串是否为标点符号?我们知道有许多可能的标点符号(,。?!等) 到目前为止,我的进度: 问题答案: 您是否还需要检查更多标点符号? 如果是这样,您可以执行此操作。

  • 问题内容: 检查值是否为有效日期(允许使用任何已知的日期格式)的简便方法是什么。 比如我有值,,它都应该被视为日期值,和值,,,不应被视为一个日期值。如果可能的话,最简单的检查方法是什么?因为时间戳也将被允许。 问题答案: 作为此副本的副本而被关闭,因此我认为在此处添加一些新信息很重要。我之所以写它,是因为我害怕人们会真正复制并粘贴此处发布的一些代码并在生产中使用它。 此处的大多数答案都使用一些仅

  • 问题内容: 如何检查给定的字符串是否采用以空格/换行符分隔的多个json字符串形式? 例如, 给定的:(3个json与空格连接) return :,因为item( 和)中的每个都是有效的json。 在Go中,我可以编写一个O(N ^ 2)函数,例如: 但这不适用于大量输入。 问题答案: 有两种选择。从编码的角度来看,最简单的方法就是正常解码JSON字符串。您可以通过解码为空结构来提高效率: (游乐

  • 问题内容: 是否有任何函数可以像MSSQL中那样返回给定字符串是否为日期? 问题答案: 您可以创建一个函数: 然后,您可以像这样使用它: