Java 处理从文件读取的值时的最佳做法

Java 处理从文件读取的值时的最佳做法,java,validation,exception,input,Java,Validation,Exception,Input,我想知道,如果我从一个文件中读取对象的参数,给定这个方法,处理这些异常的最佳方法是什么?我的班级Auto有4个参数车型、年份、公里、价格: public static Auto read(BufferedReader br) { String model = br.readLine(); int year = Integer.parseInt(br.readLine()); int km = Integer.parseInt(br.readLine

我想知道,如果我从一个文件中读取对象的参数,给定这个方法,处理这些异常的最佳方法是什么?我的班级
Auto
有4个参数
车型、年份、公里、价格

public static Auto read(BufferedReader br) {
        String model = br.readLine();
        int year = Integer.parseInt(br.readLine());
        int km = Integer.parseInt(br.readLine());
        double price = Double.parseDouble(br.readLine());
        return new Auto(model, an, km, pret);
}
从我的阅读资料和我发现的最佳实践来看,考虑到用户可能会将无效输入写入文件,例如
null
for
year
或类似的内容,我认为最好是这样:

public static Auto read(BufferedReader br) throws IOException, NumberFormatException{
        String model = br.readLine();
        int year = Integer.parseInt(br.readLine());
        int km = Integer.parseInt(br.readLine());
        double price = Double.parseDouble(br.readLine());
        return new Auto(model, an, km, pret);
}
... // in main
try {
...
} catch (IOException e) {
     //something
} catch (NumberFormatException e) {
     throw new RuntimeException("Parsing to int/double failed, invalid input. Try again.", e);
}

我的方法足够好吗?

您必须从文件中手动读取此信息,还是可以使用库来执行此任务?另外,您是否可以强制执行文件的特定格式?“处理这些异常的最佳方法是什么”-这实际上是特定于上下文的。如果这是一个手写或手动编辑的文件,那么您可能应该原谅,并将所有虚线列为警告,否则继续。如果它真的被认为是有效的,那么努力失败可能是最好的做法——通常只使用部分有效的数据继续比完全停止要糟糕得多。我们不能建议你什么是最好的,因为这取决于你的应用程序,我们对此一无所知。@JonSkeet这只是一个用于实践的场景,给定一个文件,其中有许多对象的参数(我不知道有多少),我必须读取这些参数,如果输入无效(例如用于解析的null),我应该检查它,还是因为运行时异常而使程序崩溃。我试图理解生产代码应该使用什么标准。我的观点是,“我应该检查它还是使程序崩溃”的决定取决于应用程序。这就像在没有任何数据上下文的情况下问“我应该使用字符串还是整数?”。生产代码应该为应用程序做正确的事情——应用程序有时会快速而艰难地崩溃,有时会跳过(但突出显示)损坏的数据。没有一刀切的规则。经验法则如何:1)除非真的没有办法继续,否则不要故意撞车;2) 如果一开始你认为没有办法继续前进,那就再想想;3) 人类的错误输入永远不是使生产标准代码崩溃的可接受借口。