有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

引发两个单独的FileNotFoundExceptions Java的问题

我需要两个单独的异常,如果。缺少pro文件,如果缺少的文件是一个。cmd,则当前设置会在缺少任何一个异常时引发这两个异常。我做错了什么

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

import javax.xml.ws.Holder;

public class Inventory {

    static String FileSeparator = System.getProperty("file.separator");

    public static void main(String[] args) {
        String path = args[0];
        String name = args[1];
        ArrayList<Holder> because = new ArrayList<Holder>();

        try {
            File product = new File(path + name + ".pro");
            Scanner scan = new Scanner(product);
            while (scan.hasNext()) {
                System.out.print(scan.next());
            }
            scan.close();
        } catch (FileNotFoundException e) {
            System.out.println("Usage: java Inventory <path> <filename>");
            System.out.println("The products file \"" + name + ".pro\" does not exist.");
        }

        try {
            File command = new File(path + name + ".cmd");
            Scanner scan = new Scanner(command);

            while (scan.hasNext()) {
                System.out.println(scan.next());
            }
        } catch (FileNotFoundException f) {
            System.out.println("Usage: java Inventory <path> <filename>");
            System.out.println("The commands file \"" + name + ".cmd\" does not exist.");
        }

    }
}

共 (2) 个答案

  1. # 1 楼答案

    如果我将文件对象更改为以下内容,则适用于我:

    File product = new File(path, name + ".pro");
    
  2. # 2 楼答案

    试着像这样重构:

            File product = new File(path + name + ".pro");
            if (!product.exists()) {
                System.out.println("Usage: java Inventory <path> <filename>");
                System.out.println("The products file \"" + name + ".pro\" does not exist.");
                return;
            }
    
            File command = new File(path + name + ".cmd");
            if (!command.exists()) {
                System.out.println("Usage: java Inventory <path> <filename>");
                System.out.println("The commands file \"" + name + ".cmd\" does not exist.");
                return;
            }
            try {
                Scanner scan = new Scanner(product);
                while (scan.hasNext()) {
                    System.out.print(scan.next());
                }
                scan.close();
    
                scan = new Scanner(command);
                while (scan.hasNext()) {
                    System.out.println(scan.next());
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }