parseInt和parseLong抛出UnsupportedOperationException

时间:2011-04-01 06:15:07

标签: java eclipse

Integer.parseInt("5")Long.parseLong("5")在Eclipse表达式窗口中抛出UnsupportedOperationException

Eclipse Environment Screenshot

我认为这也是我在运行时获得的异常,但对Eclipse不熟悉,我不确定如何在调试会话中找到e的类型:

public static long longTryParse(String text, long fallbackValue) {
  try {
    return Long.parseLong(text);
  } catch (Exception e) {
    return fallbackValue; // When stopping at a breakpoint here, Eclipse says that e is of type 'Exception'.  Well, that's informative.
  }
}

所以......

  1. 这些有效的陈述是?
  2. 如果是这样,为什么我会例外?
  3. (不太重要)为什么Eclipse在调试会话期间不会说e的类型是UnsupportedOperationException而不是Exception?
  4. 谢谢!

6 个答案:

答案 0 :(得分:2)

  

这些有效的陈述是什么?

是...在普通Java程序的上下文中作为Java表达式。

在Eclipse调试器的表达式求值程序的上下文中,我不确定。

  

如果是这样,为什么我会例外?

我不确定,但我怀疑它与调试器本身有关。

  • 一种可能性是您错误地使用了表达式评估功能。

  • 另一种可能性是Eclipse调试器中存在错误,或者Eclipse调试器与JVM中的调试代理程序不匹配。

我知道的一件事是parseIntparseLong方法本身不会抛出UnsupportedOperationException。 (理论上,它们可能是因为它是一个未经检查的异常。但我检查了这两种方法的源代码,并且代码无法做到这一点......如果以正常方式执行。)


Google查询 - “site:eclipse.org + UnsupportedOperationException JDI” - 显示了Eclipse问题数据库和新闻组/邮件列表中的大量点击。

在某些情况下,问题似乎是目标平台的JDI / JNDI实现不完整。这可能是你的问题吗?你提到你正在进行Android开发......

答案 1 :(得分:1)

根据java docs,parseInt只能抛出NumberFormatException,这意味着UnsupportedException来自代码中的不同位置。

<强> parseInt函数

public static int parseInt(String s)
                    throws NumberFormatException
  

将字符串参数解析为带符号的十进制整数。那些角色   在字符串中必须都是十进制的   数字,除了第一个   字符可以是ASCII减号   ' - '('\ u002D')表示否定   值。得到的整数值是   返回,就像参数一样   并且基数10给出为   争论的   parseInt(java.lang.String,int)   方法

答案 2 :(得分:1)

我认为它与parseInt或parseLong无关。 该异常明确指定了“异常处理异步线程队列”

已知旧版本的Eclipse在调试模式下使用时会抛出类似的异常。但我认为这些是在较新版本中修复的。

我知道您的代码没问题,因为如果出现任何问题,它会抛出“NumberFormatException”。

我甚至尝试过一个例子来确保。

Long lVal = Long.parseLong("5");
System.out.println("lVal = " + lVal );

输出

  

lVal = 5

没有例外

答案 3 :(得分:0)

尝试将sysout放在catch块中,该块显示异常的类型。

System.out.println(e);

此外,正如suresh所说,它只能抛出NumberFormatException

答案 4 :(得分:0)

我认为您应首先尝试解析文本变量并将其放入另一个长变量并打印。这样您就可以知道解析是否已完成。这样你就会知道问题所在。

答案 5 :(得分:0)

异常是e的声明类型,通常在Java透视图的工具提示中显示。如果eclipse没有告诉你更多,首先要确保你处于调试透视图(不是在Java透视图中)。

我猜你的eclipse工具提示配置有问题。您应该在变量视图中看到有关异常的更多信息(如果它未打开,请尝试Window / Show View / Variables)。

此外,当调试在断点处停止时,您可以在源代码中标记e并按CTRL + I(检查)。你应该得到一个弹出窗口,告诉你更多关于e。

编辑:这是关于了解更多关于e的信息。我同意早期的海报,你通常无法从代码中获得UnsupportedOperationException。似乎问题是调试无法正常工作。