Java 扫描仪中的异常处理

Java 扫描仪中的异常处理,java,Java,在java中使用Scanner类时是否需要处理异常。你怎么解释这件事 我对此没有正确的想法。任何人都可以帮助我吗?Java支持异常处理,这样我们就可以避免应用程序中不必要的行为。在任何事务中,如果我们预见到任何不需要的行为,我们应该处理异常。Scanner类可以根据所使用的操作类型引发任何异常,例如Runtime、illegalArgument、numberformat等。因此,作为一种良好的实践,我们应该始终单独捕获所有特定异常,并获得更好的执行。任何引发异常的方法的使用都应该处理、重新引发或

在java中使用Scanner类时是否需要处理异常。你怎么解释这件事


我对此没有正确的想法。任何人都可以帮助我吗?

Java支持异常处理,这样我们就可以避免应用程序中不必要的行为。在任何事务中,如果我们预见到任何不需要的行为,我们应该处理异常。Scanner类可以根据所使用的操作类型引发任何异常,例如Runtime、illegalArgument、numberformat等。因此,作为一种良好的实践,我们应该始终单独捕获所有特定异常,并获得更好的执行。

任何引发异常的方法的使用都应该处理、重新引发或重新声明(如果是选中的异常)让他们为下一个级别选择如何处理它

Scanner
中,如果采用方法,它会根据扫描仪的状态引发各种异常。你必须关心它。
但是护理的方式取决于您的程序逻辑

也就是说,
Scanner
中的大多数异常都是
RuntimeException
,这意味着您不需要在代码中显式捕获它们。假设您在
main
中,如果发生异常,它将由JVM在顶层处理。在这种情况下,您的程序将以错误代码和堆栈跟踪退出

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();
}

对。例如,如果使用扫描仪对象读取文件,则应处理FileNotFoundException,否则将出现错误。但是,如果您只是使用System.in作为输入,则不会显示任何错误。但是,同时,您应该检查输入是否符合您希望从用户处获得的信息,因此始终建议使用异常处理。

到目前为止您尝试了什么?请在遇到问题的地方发布代码片段。@Sameera,你想做什么?请分享一些例子