所以我有一個很大的Java應用程序,我在一年前寫了一個,我試着再次理解它。我在代碼中看到了一個明顯有NoSuchElementException的風險的方法:我在一個已經用任意字符串構造的scanner變量上調用.next()。該方法唯一被拋出的是Exception的自定義子類。有風險的命令也不是寫在catch-block中的。代碼編譯和工作正常,當我使用我的貴族以這樣的方式,它應該拋出一個NoSuchElementException什麼也沒有發生:0Java NoSuchElementException
作爲一個測試,我寫了一個catch代碼塊,編譯它,運行gui和使它再次拋出NoSuchElementException,並且應用程序成功地捕獲了異常並相應地執行了操作。我怎樣才能編譯代碼而不指定這個異常可能會被拋出?如果它有什麼用,這裏是沒有追趕的代碼塊:
public static Expression interpret(final Scanner scanner)
throws
InvalidPosition,
NoSuchSpreadsheet,
IllegalStartOfExpression,
InvalidExpression,
FalseSyntax,
InvalidRange {
String keyword = null;
try {
keyword = scanner.next();
} catch (NoSuchElementException e) {
throw new IllegalStartOfExpression();
}
switch(keyword) {
case "Get":
Position pos = PositionInterpreter.interpret(scanner.next());
Expression expression = Application.instance.get(pos);
if (expression instanceof Text) {
System.out.println("Failure");
} else { System.out.println("Success"); }
return new Text(expression.toString());
case "Int":
return new Int(
scanner.nextInt());
正如你所看到的,方法簡單假設有在掃描儀不止一個詞檢查是否有至少後唯一的那個。我怎樣才能編譯這個?
我沒有看到我的聲明,該方法將引發它獵人,請詳細說明 – user2651804