2011-04-01 69 views
1

Integer.parseInt("5")Long.parseLong("5")在Eclipse Expressions窗口中拋出UnsupportedOperationExceptionparseInt和parseLong引發一個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?

謝謝!

+0

重啓Eclipse與clean選項,也許它可以幫助 – 2011-04-01 06:25:30

回答

2

這些有效的陳述?

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

在Eclipse調試器表達式計算器的上下文中,我不確定。

如果是這樣,爲什麼我會得到異常?

我並不確定,但我懷疑這與調試器本身有關。

  • 一種可能性是您正在錯誤地使用表達式評估功能。

  • 另一種可能性是,這是Eclipse調試器中的錯誤,或者Eclipse調試器與JVM中的調試代理之間不匹配。

有一兩件事,我不知道的是,parseIntparseLong方法本身不亂扔UnsupportedOperationException。 (理論上,它們可能是因爲它是一個未經檢查的例外,但我檢查了這兩種方法的源代碼,並且如果以正常方式執行,代碼無法這樣做)


Google查詢 - 「site:eclipse.org + UnsupportedOperationException JDI」 - 在Eclipse問題數據庫和新聞組/郵件列表中顯示了很多匹配。

在某些情況下,它看起來像問題是目標平臺的JDI/JNDI實現不完整。這可能是你的問題嗎?你提到你正在做Android開發...

+0

感謝。爲了澄清,我在表達式窗口中得到一個異常,但是在運行時String text ==「5」。我正在運行Eclipse Classic 3.6.2和一些針對該項目的Android API。 JVM的版本爲1.6.0_24。 – 2011-04-01 06:50:22

1

根據java docs parseInt只能拋出NumberFormatException,這意味着UnsupportedException來自代碼中的不同位置。

parseInt函數

public static int parseInt(String s) 
        throws NumberFormatException 

將字符串參數作爲有符號的十進制整數。字符串中的字符 必須全部爲十進制的 數字,但第一個 字符可能是ASCII減號 ' - '('\ u002D')以指示負值 值。返回的結果整數值爲 ,就好像參數 和基數10被作爲 parseInt(java.lang.String,int) 方法的 參數給出一樣。

0

嘗試將sysout放在catch塊中,它顯示異常的類型。

System.out.println(e); 

而且作爲蘇雷什提到它只能拋出NumberFormatException的

0

我覺得你應該先嚐試分析文本變量,並把它放在另一個長變量和打印。這樣你就可以知道解析是否完成。所以你會知道問題在哪裏。

0

異常是e的聲明類型,這是通常在Java透視圖的工具提示中顯示的內容。如果eclipse沒有告訴你更多的信息,首先確保你處於調試的角度(而不是Java角度)。

我想你的eclipse工具提示配置有問題。您應該在變量視圖中看到關於異常的更多信息(如果它未打開,請嘗試Window/Show View/Variables)。另外,當調試在斷點處停止時,可以在源代碼中標記e,並按CTRL + I(檢查)。你應該得到一個彈出窗口告訴你更多關於e。

編輯:這是關於發現更多關於e。我同意以前的海報,你通常不能從你的代碼中得到一個UnsupportedOperationException。似乎問題在於調試無法正常工作。

1

我不認爲它與parseInt或parseLong有關。 異常明確指定「Exception processing async thread queue」異常處理異步線程隊列

當在調試模式下使用Eclipse時,舊版本的Eclipse已知會拋出類似的異常。但我認爲這些已在新版本中修復。

我知道你的代碼是可以的,因爲如果出現任何錯誤,它會拋出「NumberFormatException」。

我甚至試過一個例子來確認。

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

產量爲

LVAL = 5

沒有例外