我正在尝试使用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
知道代码有什么问题吗?
答案 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
}
}
希望这有帮助!