Integer.parseInt("5")
和Long.parseLong("5")
在Eclipse表达式窗口中抛出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.
}
}
所以......
谢谢!
答案 0 :(得分:2)
这些有效的陈述是什么?
是...在普通Java程序的上下文中作为Java表达式。
在Eclipse调试器的表达式求值程序的上下文中,我不确定。
如果是这样,为什么我会例外?
我不确定,但我怀疑它与调试器本身有关。
一种可能性是您错误地使用了表达式评估功能。
另一种可能性是Eclipse调试器中存在错误,或者Eclipse调试器与JVM中的调试代理程序不匹配。
我知道的一件事是parseInt
和parseLong
方法本身不会抛出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。似乎问题是调试无法正常工作。