java.net.UnknownHostException: nome host non valido per il server

1. Introduzione

In questo tutorial, impareremo la causa di UnknownHostException con un esempio. Discuteremo anche dei possibili modi per prevenire e gestire l'eccezione.

2. Quando viene generata l'eccezione?

UnknownHostException indica che non è stato possibile determinare l'indirizzo IP di un nome host. Può accadere a causa di un errore di battitura nel nome host:

String hostname = "//locaihost"; URL url = new URL(hostname); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.getResponseCode();

Il codice sopra genera un'eccezione UnknownHostException poiché il locaihost con errori di ortografia non punta a nessun indirizzo IP.

Un altro possibile motivo per UnknownHostException è il ritardo nella propagazione DNS o l'errata configurazione del DNS.

Potrebbero essere necessarie fino a 48 ore prima che una nuova voce DNS venga propagata in Internet.

3. Come prevenirlo?

Evitare che l'eccezione si verifichi in primo luogo è meglio che gestirla in seguito. Alcuni suggerimenti per prevenire l'eccezione sono:

  1. Ricontrolla il nome host: assicurati che non ci siano errori di battitura e ritaglia tutti gli spazi bianchi.
  2. Controlla le impostazioni DNS del sistema: assicurati che il server DNS sia attivo e raggiungibile e, se il nome host è nuovo, attendi che il server DNS lo raggiunga.

4. Come gestirlo?

UnknownHostException estende IOException , che è un'eccezione controllata. Simile a qualsiasi altra eccezione verificata, dobbiamo lanciarla o circondarla con un blocco try-catch .

Gestiamo l'eccezione nel nostro esempio:

try { con.getResponseCode(); } catch (UnknownHostException e) { con.disconnect(); }

È buona norma chiudere la connessione quando si verifica UnknownHostException . Molte inutili connessioni aperte possono causare l'esaurimento della memoria dell'applicazione.

5. conclusione

In questo articolo, abbiamo appreso cosa causa UnknownHostException , come prevenirlo e come gestirlo.

Come sempre, il codice è disponibile su Github.