[英]Exception handling in Scanner
在Java中使用Scanner类时是否有必要处理异常。 您如何解释呢?
我对此没有正确的想法。 有人可以帮助我吗?
引发异常的方法的任何使用都应处理,重新引发或重新声明(如果它是已检查的异常),以便在下一个级别上选择使用该方法。
在Scanner
,如果采用nextDouble()
方法,则它会根据扫描仪的状态抛出各种异常。 您必须关心它。
但是护理的方式取决于您的程序逻辑。
也就是说, Scanner
中的大多数异常都是RuntimeException
,这意味着您不需要在代码中显式捕获它们。 假设您位于main
,如果发生异常,那么它将由JVM在顶层处理。 在这种情况下,您的程序将退出并显示错误代码和stacktrace。
Scanner
中唯一被检查且必须以某种方式处理的例外情况是从文件构造Scanner
。 IOException
和FileNotFoundException
不能忽略。
作为阅读double
时异常(滥用)用法的一个示例,您可能会想这样做:
public static void testScanDoubleWithException() {
Scanner sin = new Scanner(System.in);
System.out.println("Enter a double: ");
while (true) {
try {
double d = sin.nextDouble(); // Throw if not a double
System.out.println("Read double value: "+d);
break;
}
catch (InputMismatchException e) {
System.out.println("Invalid double, shoot again:");
sin.nextLine(); // consume bad input
}
}
sin.close();
}
但是Scanner
类提供了更简单/明确的方式:
public static void testScanDouble() {
Scanner sin = new Scanner(System.in);
System.out.println("Enter a double: ");
while (!sin.hasNextDouble()) {
System.out.println("Invalid double, shoot again:");
sin.nextLine();
}
double d = sin.nextDouble();
System.out.println("Read double value: "+d);
sin.close();
}
Java支持异常处理,因此我们可以避免应用程序中的不良行为。 在任何事务期间,如果我们预见到任何不良行为,我们都应该处理异常。 扫描程序类可以根据所使用的操作类型(例如运行时,非法参数,数字格式等)抛出任何异常,因此,作为一种好的做法,我们应始终单独捕获所有特定的异常并具有更好的执行力。
是。 例如,如果您正在使用Scanner对象读取文件,则应处理FileNotFoundException,否则将出现错误。 但是,如果仅使用System.in作为输入,则不会显示错误。 但是,与此同时,您应该检查输入是否符合用户的要求,因此建议始终使用异常处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.