를 기록 할 경로를 선언 할 때, 그래서 나는 here을보고 다음과 같은 코드를 작성 나는 이것을 얻는다 :때 java.io.IOException 파일
unreported exception java.io.IOException; must be caught or declared to be thrown
무엇이 코드에 문제가있을 수 있는가?
를 기록 할 경로를 선언 할 때, 그래서 나는 here을보고 다음과 같은 코드를 작성 나는 이것을 얻는다 :때 java.io.IOException 파일
unreported exception java.io.IOException; must be caught or declared to be thrown
무엇이 코드에 문제가있을 수 있는가?
java.io.IOException은 checked exception입니다. 그러므로 던져 줄 수있는 줄은 다음 중 하나 여야합니다 :
- 캡처하는 try-catch 블록에 포함됩니다.
try{
...
FileHandler fh = new FileHandler("/Users/me/.jenkins/myLogs");
...
} catch (java.io.IOException e){
//handle exception
}
- 명시 적으로 throw하는 방법에 포함됩니다.
void myMethod() throws java.io.IOException{
...
FileHandler fh = new FileHandler("/Users/me/.jenkins/myLogs");
...
}
당신은 블록 내부에이 코드를 작성해야합니다 : 그것은 바로 다른 클래스 멤버 선언과 함께 class
의 본문에 배치 할 수 없습니다
log.addHandler(fh);
.
이 같은 방법 안에 넣어 :public void foo() {
log.addHandler(fh); // this will still give a compilation error
}
은 컴파일 오류를 해결하기 위해,
예외를 던지거나 오른쪽 방법 내부를 처리 할 수있는 방법을 선언합니다.public void foo() throws Exception{
log.addHandler(fh);
}
또는
public void foo() {
try{
log.addHandler(fh);
} catch (Exception e){
e.printstacktrace();
// OR handle exception here
}
}
희망이 도움이!
이 코드가 블록 내부에없는 것처럼 보입니다. '클래스 '에 임의의 코드를 가질 수는 없습니다. 정적 변수 선언과 인스턴스 변수 선언 만 허용됩니다. 또한'log'가'static' 인 동안'fh'는 작동하지 않는다면 문제가되는'class' 인스턴스를 생성 할 때마다'FileHandler'를 추가 할 것입니다. –
이제 전체 질문이 변경됩니다. 그래서, 그게 맞습니까? –