2014-11-30 1 views
0

я пробую читать URL с помощью Javaисключения CertificateException никогда не брошена в теле из соответствующей Ьги заявления

try{ 
    HttpURLConnection c = (HttpURLConnection) new URL(args[0]).openConnection(); 
    c.setRequestMethod("GET"); 
    c.setRequestProperty("User-Agent","Mozilla/5.0"); 
    c.setRequestProperty("Accept-Language","en-US,en;q=0.5"); 
    System.out.println(c.getResponseCode()); 
}catch(java.security.cert.CertificateException e){ 
    System.out.println("not valid"); 
}catch(Exception e){ 
    System.out.println(e.getMessage()); 
} 

, когда я использую только последний улов на доменах с недопустимой сертификацией Ssl, он бросает java.security.cert.CertificateException: No name matching <domainName> found

но когда я пытаюсь поймать точное исключение для более работ он не компилируется и печатает эту ошибку:

error: exception CertificateException is never thrown in body of corresponding try statement 
    }catch(java.security.cert.CertificateException e){ 
    ^

как я могу гарантировать, что компилятор этот кот ch находится в правильном месте, или в чем проблема?

ответ

0

when I use just the last catch on domains with invalid ssl certification, it throws java.security.cert.CertificateException: No name matching found

Нет, это не так. Это исключает исключение SSLHandshakeException. Посмотрите еще раз.

how can I assure compiler that this catch is in the right place

Вы не можете. Это не так. Компилятор прав.

what's my problem?

Именно то, что говорит компилятор. Вы получаете исключение, которое не выбрасывается. Снимите фиксатор. Catch SSLHandshakeException если хотите.

Смежные вопросы