所以我有一年前写的一个相当大的java应用程序,我试图再次理解它。我正在查看代码中的一个方法,其中存在明显的 NoSuchElementException 风险:我正在使用任意字符串构造的扫描仪变量上调用 .next()。该方法声明要抛出的唯一东西是自定义的 Exception 子类。有风险的命令也没有写在 catch-block 中。代码编译并运行良好,当我以这样的方式使用我的 gui 时,它应该抛出 NoSuchElementException 没有任何反应:O
作为测试,我在代码中编写了一个 catch 块,编译它,运行 gui 并让它再次抛出 NoSuchElementException,应用程序成功地捕获了异常并采取了相应的行动。我如何编译代码而不指定可能引发的异常?如果它有任何用处,这里是没有 catch 块的代码:
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());
如您所见,该方法只是在检查是否至少有一个单词后假设扫描仪中存在多个单词。我如何摆脱编译这个?