Java Try / Catch问题

时间:2013-12-06 05:28:14

标签: java error-handling

我对Java比较新,我总是遇到代码中的Try / Catch函数问题,所以我想知道你们是否可以帮助我。

我遇到的问题是我写了一个try / catch但是我收到一条错误消息,说永远不会抛出异常。我在我的整个代码的另一部分写了一个类似的声明,它确实工作正常,所以我想知道这个问题是什么。

以下是代码:

public String getMatchedLogs(String matchStr, File logFile) {
    String fileLine = "";
    try {
        Scanner ipScan = new Scanner(fileLine);
        if (fileLine.indexOf(matchStr) > -1) {
            output += fileLine;
        }else{
            System.out.println(fileLine.indexOf(""));
        }
    } catch (FileNotFoundException fnfe) {
        System.out.println(fnfe.getMessage());

    }
    return fileLine;
} //end getMatchedLogs

错误在catch中,它表示永远不会抛出异常。所以如果你们能给我一些有关正在发生的事情的见解,我会非常感激。

6 个答案:

答案 0 :(得分:2)

您实际上并没有使用参数File logFile执行任何操作,而是仅使用您定义的空String fileLine = "";。因此,没有文件访问权限,因此不可能有FileNotFoundException

答案 1 :(得分:1)

养成查找方法的习惯,看看他们是否按照你的想法行事。

File对象的Scanner构造函数打开一个文件并声明它可以抛出FileNotFoundException http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)

String的Scanner构造函数扫描字符串本身并且不打开文件,因此不需要抛出异常 http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.lang.String)

顺便说一句:您的代码似乎正在使用扫描程序写入传入的字符串(“filine”)。字符串在Java中是不可变的,并且在传递给方法时不能更改。

答案 2 :(得分:0)

扫描仪扫描线不会抛出

FileNotFound异常。您没有使用logFile,因此无法抛出FileNotFoundException

答案 3 :(得分:0)

如果你有一个编译器知道永远不会发生的catch处理程序,java编译器可能会抱怨。 (与Scala等新语言相比,Java异常规则往往非常严格)

答案 4 :(得分:0)

您正在捕获一种特殊类型的异常,而这种异常并没有被抛出。

所以你应该尝试:

catch (Exception e) {}

捕捉任何异常。

答案 5 :(得分:0)

如果Exception以外的任何FileNotFoundException无法捕捉到你的情况。最好使用如下..

     try {
        try {
            Scanner ipScan = new Scanner(fileLine);
            if (fileLine.indexOf(matchStr) > -1) {
                output += fileLine;
            } else {
                System.out.println(fileLine.indexOf(""));
            }
        } catch (FileNotFoundException fnfe) {
            System.out.println(fnfe.getMessage());
        }
    } catch (Exception e) {
        // error log here
    }