我有一个项目,我们经常使用 Integer.parseInt()
将 String 转换为 int。当出现问题时(例如, String
不是数字而是字母 a
或其他)此方法将引发异常。但是,如果我必须在我的代码中到处处理异常,这很快就会变得非常难看。我想把它放在一个方法中,但是,我不知道如何返回一个干净的值以表明转换出错了。
在 C++ 中,我可以创建一个接受指向 int 的指针并让该方法本身返回 true 或 false 的方法。但是,据我所知,这在 Java 中是不可能的。我还可以创建一个包含真/假变量和转换值的对象,但这似乎也不理想。全局值也是如此,这可能会给我带来一些多线程问题。
那么有没有一种干净的方法来做到这一点?
原文由 Bad Horse 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以返回
Integer
而不是int
,在解析失败时返回null
。遗憾的是 Java 没有提供在内部抛出异常的情况下执行此操作的方法 - 您可以隐藏异常(通过捕获它并返回 null),但如果您解析数百个,它仍然可能是一个性能问题数千比特的用户提供的数据。
编辑:这种方法的代码:
请注意,如果
text
为空,我不确定这会做什么。你应该考虑——如果它代表一个错误(即你的代码很可能传递一个无效值,但不应该传递 null)那么抛出一个异常是合适的;如果它不代表错误,那么您应该像返回任何其他无效值一样返回 null。最初这个答案使用了
new Integer(String)
构造函数;它现在使用Integer.parseInt
和装箱操作;通过这种方式,小值最终将被装箱到缓存的Integer
对象,使其在这些情况下更有效率。