2011-11-17 2 views
0

나는 이것이 이전에 잘 돌아 왔음을 확신하지만, eclipse는 throw 라인에 오류가 있다고 말한다. 내 옛날 학생 프로젝트에서java가 체크 예외를 던지고 있습니까?

try{} 
}catch(Exception e){ 
    throw e; } 

내가 쓴 :

try { 
     Class.forName("org.postgresql.Driver"); 
     this.connection = DriverManager.getConnection(
       DataSource.getURL(), DataSource.getUserName(), DataSource.getPassword()); 
    } catch (ClassNotFoundException e) { 
     System.out.println("Could not find driver to connect to database. Please make" 
       + "sure the correseponding postgreSQLjdbc library is added."); 
     throw e; 

    } catch (SQLException e) { 
     System.out.println("Username or password is not correct"); 
     throw e; 
    } 

그것은 완벽했다.

만이 유형은 작동하지만, 아마도 당신의 방법은 UnsupportedAddressTypeException하지만 SQLExceptionClassNotFoundException을 던져 선언이다 내가

throw new UnsupportedAddressTypeException(); 

답변

6

을 원하는 것이 아니다. 확인 된 예외는 예외 또는 수퍼 클래스를 throw하는 것을 선언하는 메서드에서만 throw 될 수 있습니다 (기존 예외를 다시 포함).

코드 블록이 선언 있어야 포함있어서

있어서 "예외가 발생"중 다른 예외 자체 OR 신호를 처리 할 필요가있다 :

+0

항상 그렇게 좋았습니까? 나는 완전히 미쳐 가고있다 ... – Aubergine

+0

@Aubergine - 항상 그렇게했다. 메소드가 throw/propagate하는 확인 된 예외를 선언하는 요구 사항은 1.0 이후부터 Java에 있었을 것입니다. 당신은 너무 미쳤을 수도 있습니다 :-) –

+0

나는 그것을 고맙다! :-) 커피 휴식 시간. – Aubergine

0

이클립스는 오류가 있기 때문에 말한다 을 호출하면 예외가 발생할 수 있으며 처리해야합니다.

"throw e"를 다른 try/catch 블록 (예외 자체를 처리하는 메서드)에 넣는 방법도 있습니다. 이러한 진술을했던 방법과 같이 선언되어 있어야하기 때문에

귀하의 유니 코드 일 :

방법 ×()의 ClassNotFoundException를 throw되는 SQLException

0

을 당신이하고 정확히에 대한 세부 사항에 대한 추가 정보가 없으면, 내가 줄 수있는 유일한 일반적인 해결책은 체크되지 않은 RuntimeException에 래핑 된 예외를 다시 던지기위한 것이다.

포함 된 코드는 확인 된 예외 인 예외를 다시 발생시킵니다. 이 메소드가 내부에 존재하지 않는 한, "throws Exception"이라고 선언되어 있지 않으면, 어느 Java 버젼에서도 동작하지 않을 수 있습니다.

또 다른 참고 사항으로는 절대로 기록하고 다시 게시하지 마십시오. 둘 중 하나를 수행하십시오. 따라서 프로젝트 코드는 다음과 같아야합니다.

.... 

    } catch (SQLException e) { 
     throw RuntimeException("Username or password is not correct", e); 
    } 
0

ClassNotFoundException 또는 SQLException은 예외로 검사됩니다. 그래서 던져 질 때마다 어떻게 든 처리되도록되어 있습니다 (수동으로 '던짐'키워드 사용).

확인 된 예외를 처리하는 데는 두 가지 방법이 있습니다. 1. try-catch 블록 내에서 확인 된 예외를 throw 할 수있는 코드를 둘러 쌉니다. 2. 특정 코드가 작성된 메소드 정의 뒤에 throws 절을 추가하십시오.

여기서 e가 throw 될 때 e는 ClassNotFoundException 또는 SQLException의 인스턴스이며 위의 두 가지 방법 중 하나로 처리해야합니다.

그러나 UnsupportedAddressTypeException은 확인되지 않은 예외입니다. 따라서 명시 적으로 처리 할 필요가 없습니다.어디서나 던져서 Java가 처리 할 수 ​​있습니다.

관련 문제