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

如何捕捉两个文件的FileNotFoundException?

施同
2023-03-14

我有两个文本文件,如果找不到文件,我想抛出一个异常。我有一个类FileReader来检查文件是否存在,并且在我的主目录中我尝试捕获异常。

    public FileReader() throws FileNotFoundException {
         super();
         File file1 = new File("file1.txt");
         File file2 = new File("file2.txt");

         //Throws the FileNotFoundException if the files aren't found
         if (!file1.exists()) {
             throw new FileNotFoundException("File \"file1.txt\" was not found.");
         } else {
         //do something
         }
         if (!file2.exists()) {
             throw new FileNotFoundException("File \"file2.txt\" was not found.");
         } else {
         //do something
         }

在另一个类中,如果文件丢失,我想捕捉异常。

public class FileIO {

public static void main(String[] args) {

    try {
         //do stuff
    } catch(FileNotFoundException e) {
        System.out.println(e.getMessage());
    } 

如果只缺少一个文件,这将非常有效。但是如果文件1和文件2都缺失,我只捕捉到第一个缺失文件的异常,然后程序结束。我的输出是:

File "file1.txt" is not found.

我如何捕捉两者的异常?我希望它输出:

File "file1.txt" is not found.
File "file2.txt" is not found.

共有1个答案

单于轶
2023-03-14

您可以在引发异常之前先构造错误消息

public FileReader() throws FileNotFoundException {
    super();
    File file1 = new File("file1.txt");
    File file2 = new File("file2.txt");

    String message = "";

    if (!file1.exists()) {
        message = "File \"file1.txt\" was not found.";
    }
    if (!file2.exists()) {
        message += "File \"file2.txt\" was not found.";
    }

    //Throws the FileNotFoundException if the files aren't found
    if (!messag.isEmpty()) {
        throw new FileNotFoundException(message);
    }

    //do something
 类似资料:
  • 我想要的是每次tomcat服务器启动时都启动一个线程。为此,我需要关注关闭tomcat的事件。我该怎么做?我尝试使用会话来完成,但有时会话甚至在关闭并重新启动tomcat后仍然存在?我有什么选择?

  • 我在一个xml布局文件中声明了许多按钮,并将此布局用于一个片段。 令人失望的是,“onclickbutton”事件被捕捉在主机activity,而不是在我的片段。当然,在我的片段中,我可以手动解决这个问题,如下所示: 有没有显式的方法来处理片段中的onClickbutton事件?

  • 在节点中。在js服务器上,捕获SIGTERM和捕获SIGINT有什么区别吗? 我认为进程不应该能够防止SIGINT关闭? 我是否能够捕获两个信号并阻止退出?我的实验表明答案是肯定的,但从我所读到的内容来看,SIGINT总是假设关闭一个进程。 或者我把SIGINT和SIGKILL混淆了?也许SIGKILL是我无法恢复的信号? 捕捉这些信号当然可以让我优雅地关机: 我想我把SIGINT和SIGKILL

  • 问题内容: 我有一个很大的数学表达式,必须动态创建。例如,一旦我已经解析了“东西”,结果就会像一个字符串:。 因此,为了计算该表达式的结果,我使用的是函数…… 这里的问题是,有时我会收到错误消息,说被零除,并且我不知道如何捕获该异常。我已经尝试过类似的事情: 要么: 但这行不通。因此,如何避免被零除的应用程序崩溃? 编辑: 首先,我想澄清一下:表达式是动态构建的,因此如果分母为零,我不能仅仅求值。

  • 我想捕获并忽略以下tomcat。因为我的程序没有必要注意这个。 知道如何以及在哪里可以捕捉到这个异常吗?以下是例外情况:

  • 问题内容: 在Java中是否有捕捉到内存不足错误()的问题? 问题答案: 是的 。以下是一些可能有意义的示例: 如果您想通过 优雅地关闭 程序来处理它 如果要向用户显示问题或 记录错误 根据您的设计,您甚至可以清理内存并 恢复工作状态 但是 ,请注意,通常情况下(除非您处在一次要分配大量内存的位置),对于这些情况,您可能不会专门捕获OutOfMemoryError,而是始终在顶部进行操作主要入口点