2011-07-03 81 views
1

抱怨我有這樣的一類:javac還不能在不醒目異常(運行時異常)

/* parses a Value out of a String */ 
public static int parseValue(final String text) throws NumberFormatException { 

    String cleanedValue = text.replace("-", "").replace(",", "."); 
    return Math.round(Float.parseFloat(cleanedValue) * 100); 
} 

出於某種原因的javac不抱怨,我不趕在NumberFormatException的主叫碼。

有人能告訴我爲什麼嗎?

回答

4

從Java文檔,NumberFormatException是,

拋出,表明該 應用程序試圖將一個 字符串轉換爲數字類型之一, 但該字符串沒有 適當的格式。

只要看看繼承結構,NumberFormatException來自RuntimeException,編譯器不會強制捕獲這些異常。不建議。您只需要捕獲/聲明已檢查的異常。現在

java.lang.Object 
    java.lang.Throwable 
     java.lang.Exception 
      java.lang.RuntimeException 
       java.lang.IllegalArgumentException 
        java.lang.NumberFormatException 

,方法不需要在其throws子句中可能的方法的執行期間拋出但未被捕獲的RuntimeException的任何子類申報。

4

NumberFormatExceptionRuntimeException的子類。編譯器不需要聲明或捕獲這樣的異常,部分原因是很多代碼可能會拋出諸如NullPointerException之類的東西,所以如果我們必須總是聲明或捕獲這些東西,那麼會導致大量無關的代碼。