当前位置: 首页 > 知识库问答 >
问题:

达到例外情况后如何继续?[重复]

狄子真
2023-03-14

我的代码旨在循环遍历一个文件,边走边添加,然后显示总数。目前,它正确处理错误,但是当它遇到不正确的数据(非整数)时,它只是给出总数,直到文本文件的那一行。我想要的是让它继续,因为前面的数据可能仍然是整数。我该怎么做?不仅如此,而且我对InputMismatchException的了解是没有显示适当的错误。

我的代码:

public class HandlingTheException {

public static void main(String[] args) {
    int integerTotal = 0;
    int i;
    Scanner scan = null;
    File integerFile = new File ("someintegers.txt");

    try {
        scan = new Scanner (integerFile);
        System.out.println("File contents: " );

        while (scan.hasNextInt()) {
            i = scan.nextInt();
            integerTotal += i;
            System.out.println(i);
        }

        System.out.println("File total: " + integerTotal + ". ");
        System.out.println("Finished. ");
        scan.close();
    }
    catch (InputMismatchException e1) {
        System.err.println("Incorrect data type within file. Use integer only." );
    }
    catch (FileNotFoundException e2) {
        System.err.println(integerFile.getName()+" does not exist");
    }
}

文件示例:10 20 30 40 50 60

共有1个答案

商骞仕
2023-03-14

将导致错误的代码放在try/catch块中,并在适当的日志记录后处理异常。

while (scan.hasNextInt()) {
        try {
            i = scan.nextInt();
        } catch (Exception e) {
             i =0;
            //logging if necessary
        }
        integerTotal += i;
        System.out.println(i);
    }

代替Exception,您可以捕获更具体的NumberFormatException

 类似资料:
  • 可以用 stop() 停止计时器。 但是用 count2() 启动的无法被 stop() 停止,而且点一次就增加一个计时器。 请问要如何操作才可以暂停一个计时器,再重启,重启后可以用 stop() 持续停止。

  • 因此,我尝试将依赖项加载到代码中,然后得到以下结果: TypeLoadException:无法加载“类型”系统。数据SqlClient。SqlConnection“来自程序集”系统。数据,版本=2.0.0.0,区域性=中立,PublicKeyToken=b77a5c561934e089'。系统反射MonoMethodInfo。GetMethodInfo(IntPtr句柄)(at/Users/bui

  • 我正在实现与Android应用程序通信的服务器端应用程序。Android应用程序在最初与C服务器通信之前就已经实现了。现在我想用java代码替换C服务器。Android应用程序与服务器进行通信,通过读卡器中的卡对此人进行身份验证。 身份验证协议包含应用程序和服务器之间要成功完成的几个通信步骤。 应用程序和服务器之间的消息格式如下: 首先,应用程序发送一个类型1的请求来建立与读卡器中sim卡的连接。

  • PLY 分发包中的 example 目录包含几个简单的示例。对于理论性的东西以及 LR 分析法的实现细节,应当从编译器相关的书籍中学习。

  • 例如,我有一个银行账户,限额是500欧元。首先我加400欧元,然后再加150欧元。例如,如何更改代码以添加上次添加的100欧元,然后打印;“您的限额已达到(原150欧元)的限额(剩余50欧元),无法添加。” 我现在的代码是这样的;

  • 我只是想知道,谁负责处理计算机中的数学溢出案例? 例如,在以下C代码中: 在我的机器上编译并运行这段代码得到了-32767的结果 “short”变量的大小为2字节。。我们知道2个字节可以容纳32767的最大十进制值(如果有符号的话)。。所以当我把32768分配给x。。超过其最大值32767。。它开始从-32767再次计数到32767,以此类推。。在这种情况下,到底发生了什么,所以给出了-32767