parseInt和parseLong引发一个UnsupportedOperationException异常
Integer.parseInt("5")
和Long.parseLong("5")
在Eclipse Expressions窗口中抛出UnsupportedOperationException
。parseInt和parseLong引发一个UnsupportedOperationException异常
我想这也是我在运行时获得,但作为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.
}
}
所以......
- 这些是有效的声明?
- 如果是这样,为什么我会得到异常?
- (重要性不大)为什么Eclipse在调试会话期间不会说e的类型是UnsupportedOperationException而不是Exception?
谢谢!
这些有效的陈述?
是...在普通Java程序的上下文中作为Java表达式。
在Eclipse调试器表达式计算器的上下文中,我不确定。
如果是这样,为什么我会得到异常?
我并不确定,但我怀疑这与调试器本身有关。
一种可能性是您正在错误地使用表达式评估功能。
另一种可能性是,这是Eclipse调试器中的错误,或者Eclipse调试器与JVM中的调试代理之间不匹配。
有一两件事,我不知道的是,parseInt
和parseLong
方法本身不乱扔UnsupportedOperationException
。 (理论上,它们可能是因为它是一个未经检查的例外,但我检查了这两种方法的源代码,并且如果以正常方式执行,代码无法这样做)
Google查询 - “site:eclipse.org + UnsupportedOperationException JDI” - 在Eclipse问题数据库和新闻组/邮件列表中显示了很多匹配。
在某些情况下,它看起来像问题是目标平台的JDI/JNDI实现不完整。这可能是你的问题吗?你提到你正在做Android开发...
感谢。为了澄清,我在表达式窗口中得到一个异常,但是在运行时String text ==“5”。我正在运行Eclipse Classic 3.6.2和一些针对该项目的Android API。 JVM的版本为1.6.0_24。 – 2011-04-01 06:50:22
根据java docs parseInt只能抛出NumberFormatException,这意味着UnsupportedException来自代码中的不同位置。
parseInt函数
public static int parseInt(String s)
throws NumberFormatException
将字符串参数作为有符号的十进制整数。字符串中的字符 必须全部为十进制的 数字,但第一个 字符可能是ASCII减号 ' - '('\ u002D')以指示负值 值。返回的结果整数值为 ,就好像参数 和基数10被作为 parseInt(java.lang.String,int) 方法的 参数给出一样。
尝试将sysout放在catch块中,它显示异常的类型。
System.out.println(e);
而且作为苏雷什提到它只能抛出NumberFormatException的
我觉得你应该先尝试分析文本变量,并把它放在另一个长变量和打印。这样你就可以知道解析是否完成。所以你会知道问题在哪里。
异常是e
的声明类型,这是通常在Java透视图的工具提示中显示的内容。如果eclipse没有告诉你更多的信息,首先确保你处于调试的角度(而不是Java角度)。
我想你的eclipse工具提示配置有问题。您应该在变量视图中看到关于异常的更多信息(如果它未打开,请尝试Window/Show View/Variables)。另外,当调试在断点处停止时,可以在源代码中标记e
,并按CTRL + I(检查)。你应该得到一个弹出窗口告诉你更多关于e。
编辑:这是关于发现更多关于e。我同意以前的海报,你通常不能从你的代码中得到一个UnsupportedOperationException。似乎问题在于调试无法正常工作。
我不认为它与parseInt或parseLong有关。 异常明确指定“Exception processing async thread queue”异常处理异步线程队列
当在调试模式下使用Eclipse时,旧版本的Eclipse已知会抛出类似的异常。但我认为这些已在新版本中修复。
我知道你的代码是可以的,因为如果出现任何错误,它会抛出“NumberFormatException”。
我甚至试过一个例子来确认。
Long lVal = Long.parseLong("5");
System.out.println("lVal = " + lVal);
产量为
LVAL = 5
没有例外
重启Eclipse与clean选项,也许它可以帮助 – 2011-04-01 06:25:30