try{ output.format("%d %s %s %.2f%n", input.nextInt(), input.next(),input.next(),input.nextDouble()); } catch(FormatterClosedException formatterClosedException){ System.err.println("Error writing to file. Terminating."); break; } catch(NoSuchElementException noSuchElementException){ System.err.println("Invalid input. Please try again."); input.nextLine(); }
该方法format(String format, Object... args)中Formatter类抛出2 exception:IllegalFormatException和FormatterClosedException,但在我的书上面的代码捕获NoSuchElementException和FormatterClosedException。
format(String format, Object... args)
Formatter
exception
IllegalFormatException
FormatterClosedException
NoSuchElementException
文献:java.util.NoSuchElementException是一个 RuntimeException 可以由不同类的在Java中像迭代器,枚举,被抛出 扫描仪 或StringTokenizer的。
java.util.NoSuchElementException
RuntimeException
在你的情况是Scanner。它不是从format方法。
Scanner
format
这 仅仅是在安全方面(如果不给下一个输入,然后抛出此异常)。
显示演示的示例代码
public class NoSuchElementExceptionDemo{ public static void main(String args[]) { Hashtable sampleMap = new Hashtable(); Enumeration enumeration = sampleMap.elements(); enumeration.nextElement(); //java.util.NoSuchElementExcepiton here because enumeration is empty } } Output: Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator at java.util.Hashtable$EmptyEnumerator.nextElement(Hashtable.java:1084) at test.ExceptionTest.main(NoSuchElementExceptionDemo.java:23)