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
。
NoSuchElementException
但没有捕获IllegalFormatException
?NoSuchElementException
在线文档的Formatter类format()方法中甚至没有声明它,我们如何知道是否需要捕获?文献:
java.util.NoSuchElementException
是一个
RuntimeException
可以由不同类的在Java中像迭代器,枚举,被抛出 扫描仪 或StringTokenizer的。
在你的情况是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)
嘿StackOverflow社区, 关于抛出异常。一般什么时候抛出和异常,什么时候抓取? 假设我遇到了这样的情况,我不得不退出,因为发生了一些问题,我无法从它中恢复过来。我是投还是接? 我现在就这么做: 这样做对吗?如果我只是抛出异常会更合适吗?对不起,我是例外的新手:)
是否有可能在Delphi中构建一个代码片段,使假设的EChuckNorrisException无法捕获? 对于Java编程语言,我刚刚发现在Uncatchable ChuckNorriseException中,答案是肯定的
问题 你想捕获一个异常后抛出另外一个不同的异常,同时还得在异常回溯中保留两个异常的信息。 解决方案 为了链接异常,使用 raise from 语句来代替简单的 raise 语句。 它会让你同时保留两个异常的信息。例如: >>> def example(): ... try: ... int('N/A') ... except ValueError as e:
问题 怎样捕获代码中的所有异常? 解决方案 想要捕获所有的异常,可以直接捕获 Exception 即可: try: ... except Exception as e: ... log('Reason:', e) # Important! 这个将会捕获除了 SystemExit 、 KeyboardInterrupt 和 GeneratorExit 之外的所有异常。
问题 你在一个 except 块中捕获了一个异常,现在想重新抛出它。 解决方案 简单的使用一个单独的 rasie 语句即可,例如: >>> def example(): ... try: ... int('N/A') ... except ValueError: ... print("Didn't work") ...
我有这样的情况,即活动调用管理器类调用提供者。 活动->管理器(带有asyncTask的方法)->提供程序 我应该如何将捕获的异常发送回活动?