2017-12-16 16 views
-3

throw 된 예외에 아래 코드와 같은 특정 단어가 포함되어 있는지 확인하려고하지만 IDE에서 '예외 (contains)'메서드가 Exception 유형에 대해 정의되지 않았습니다. 내가 어떻게 그럴 수 있니?Java 예외 메서드가 포함되어 있습니다.

public static void main(String[] args) throws Exception { 
    try { 
    // blah blah 
    } catch (Exception z) { 
    if (z.contains("UnknownHostException")) { 
     System.out.print("Unknown Host"); 
    } 
    // blah blah 
    } 
} 
+1

왜'Exception' 클래스에는'contains' 메소드가 있다고 생각합니까? 그 생각은 어디서 났니? ** 문서 [** Exception'] (https://docs.oracle.com/javase/9/docs/api/java/lang/Exception.html)의 javadoc을 읽었습니까? – Andreas

+1

왜 'UnknownHostException'을 잡으려고하지 않습니까? –

답변

2

난 당신이 예외를 검사하기 위해 노력하고있다 메시지 생각 :

z.getMessage().contains("UnknownHostException") 

을 그러나 일반적으로 직접 당신이 잡으려면 예외의 유형을 지정합니다. 이런 식으로 뭔가 :

try { 
    // some code 
} catch (UnknownHostException e) { 
    System.out.print("Unknown Host"); 
} catch (Exception other) { 
    // other exceptions go here 
} 

는, 특히 The catch Blocksthis를 참조하십시오.

2

z.getMessage().contains(...) 
그러나하지 않는 당신은 단순히 예외의 유형 확인하는 경우 : 직접 캐치 UnknownHostException을 :

당신이 혼동되지 않도록 위해
} catch (UnknownHostException z) { 

메시지 예와 예외 :

I am not an UnknownHostException. 

에만 거의 Exception를 잡을 안 (O nly 호출하는 메서드가 이면Exception; 프레임 워크 메서드가 아닌 한 메서드는 거의 Exception을 throw하지 않아야합니다.