【问题标题】:Java's ParseExceptionJava 的 ParseException
【发布时间】:2015-12-03 21:21:04
【问题描述】:

我一直在研究 Java 的 ParseException,在尝试编写自己的从 String 解析为 int 的方法时,有两个问题:

  1. 我应该什么时候扔掉它?当输入无效时,Java 的 Integer.parseInt(String string) 会抛出 NumberFormatException(因为它是 IllegalArgumentException 的子类是有意义的),并且根本不会抛出 ParseException
  2. 什么是“errorOffset”? ParseException 的构造函数强制你给它一个值——这是什么意思?

【问题讨论】:

  • 第二个问题,getErrorOffset 方法告诉你它的用途。它是“发现错误的位置”。
  • 这是什么意思?在字符串中发现错误的位置?还是方法? ParseException 是由字符串中的某些错误(例如字母)引起的吗?
  • 我将其解释为String中的位置。告诉方法中的位置对于大多数调用者来说不是很有用的信息,因为实现的细节应该无关紧要。
  • 在字符串中。解析"987A65" 将在索引3 处显示错误偏移量。
  • 确实如此,谢谢。那么这是否回答了第一个问题?字符串有问题时应该抛出ParseException?那么是抛出ParseException还是NumberFormatException更好?

标签: java parsing parseexception


【解决方案1】:

parseXYZ() 方法(实际上解析某些内容)抛出ParseException 是完全有效的。 Integer.parseInt 抛出 NumberFormatException,因为它是 RuntimeException 的子类型,因此不会强制您用 try-catch 包围它(ParseException 不是这样)。

offset 字段用于标识发生错误的位置。有了这些信息,您就可以使用您已经解析的任何部分数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多