try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
i = Integer.parseInt(str);
} catch(NumberFormatException e) {
System.out.Println("enter a valid input");
}
當我嘗試編譯這段代碼時,它會拋出一個編譯錯誤,說明ioexception正在發生,我應該趕上它。爲什麼在numberformatexception發生時聲明ioexception?
因此,我必須添加catch(IOException e)
語句,但發生的異常是java.lang
庫的數字格式異常,爲什麼我必須趕上ioException
。
所以程序甚至應該工作,如果我只IOException異常處理,但如果我這樣做,那麼當我不是一個整數 – shankisam912 2013-02-26 13:27:47
@ shankisam912進入NumberFormatException的任何其他程序引發運行時錯誤是一個未經檢查的運行時異常。編譯器不會強制你處理RunTimeException。 IOException是一個選中的異常。即,如果一段代碼容易引發未經檢查,Exception編譯器將強制您處理它。 – PermGenError 2013-02-26 13:29:32
我也將不得不做同樣的事情,如果我去br.read(); – shankisam912 2013-02-26 13:34:44