声明日志文件的路径时出现java.io.IOException

时间:2017-02-14 10:03:04

标签: java

我正在尝试使用Java登录文件,因此我查看了here并编写了以下代码:

private static final Logger log = Logger.getLogger( QualityGatesProvider.class.getName() );
//some other code
FileHandler fh = new FileHandler("/Users/me/.jenkins/myLogs");
log.addHandler(fh);

然而,在FileHandler fh = new FileHandler("/Users/me/.jenkins/myLogs");行上,我得到了这个:

unreported exception java.io.IOException; must be caught or declared to be thrown

知道代码有什么问题吗?

2 个答案:

答案 0 :(得分:1)

java.io.IOException是checked exception。因此,任何可以抛出它的行必须是:

.-包含在捕获它的try-catch块中。

try{
        ...

        FileHandler fh = new FileHandler("/Users/me/.jenkins/myLogs");
        ...

    } catch (java.io.IOException e){
        //handle exception
    }

.-包含在明确抛出它的方法中。

void myMethod() throws java.io.IOException{
...
        FileHandler fh = new FileHandler("/Users/me/.jenkins/myLogs");
...
}

答案 1 :(得分:1)

您需要在块中编写此代码:

log.addHandler(fh);

它不能直接放在class的主体中以及其他类成员声明。

把它放在这样的方法中:

public void foo() {
    log.addHandler(fh); // this will still give a compilation error
}

要解决编译错误,

声明方法抛出异常或在方法内处理它。

public void foo() throws Exception{
    log.addHandler(fh);
}

OR

public void foo() {
    try{
        log.addHandler(fh);
    } catch (Exception e){
        e.printstacktrace();
        // OR handle exception here
    }
}

希望这有帮助!