2017-02-14 5 views
1
내가 자바 파일에 로그인하기 위해 노력하고있어

를 기록 할 경로를 선언 할 때, 그래서 나는 here을보고 다음과 같은 코드를 작성 나는 이것을 얻는다 :때 java.io.IOException 파일

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

무엇이 코드에 문제가있을 수 있는가?

+0

이 코드가 블록 내부에없는 것처럼 보입니다. '클래스 '에 임의의 코드를 가질 수는 없습니다. 정적 변수 선언과 인스턴스 변수 선언 만 허용됩니다. 또한'log'가'static' 인 동안'fh'는 작동하지 않는다면 문제가되는'class' 인스턴스를 생성 할 때마다'FileHandler'를 추가 할 것입니다. –

+1

이제 전체 질문이 변경됩니다. 그래서, 그게 맞습니까? –

답변

1

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"); 
... 
} 
1

당신은 블록 내부에이 코드를 작성해야합니다 : 그것은 바로 다른 클래스 멤버 선언과 함께 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 
    } 
} 

희망이 도움이!

관련 문제