java.net.UnknownHostException: Nama Hos tidak sah untuk Pelayan

1. Pengenalan

Dalam tutorial ini, kita akan mengetahui punca UnknownHostException dengan contoh. Kami juga akan membincangkan kemungkinan cara mencegah dan menangani pengecualian.

2. Bilakah Pengecualian Dilempar?

UnknownHostException menunjukkan bahawa alamat IP nama host tidak dapat ditentukan. Ia boleh berlaku kerana kesalahan ketik dalam nama host:

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

Kod di atas melemparkan yang UnknownHostException sejak salah eja locaihost tidak menunjukkan apa-apa alamat IP.

Sebab lain yang mungkin untuk UnknownHostException adalah kelewatan penyebaran DNS atau salah konfigurasi DNS.

Mungkin memerlukan masa hingga 48 jam untuk kemasukan DNS baru disebarkan di seluruh Internet.

3. Bagaimana Mencegahnya?

Mencegah pengecualian daripada berlaku di tempat pertama adalah lebih baik daripada mengatasinya selepas itu. Beberapa petua untuk mengelakkan pengecualian adalah:

  1. Periksa semula nama hos: Pastikan tidak ada kesalahan ketik, dan potong semua ruang kosong.
  2. Periksa tetapan DNS sistem: Pastikan pelayan DNS siap dan terjangkau, dan jika nama host baru, tunggu sehingga pelayan DNS mengejar ketinggalan.

4. Bagaimana Mengatasinya?

UnknownHostException meluaskan IOException , yang merupakan pengecualian yang dicentang . Sama seperti pengecualian lain yang diperiksa, kita mesti membuangnya atau mengelilinginya dengan blok cubaan .

Mari menangani pengecualian dalam contoh kami:

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

Amalan yang baik untuk menutup sambungan apabila UnknownHostException berlaku. Banyak sambungan terbuka yang sia-sia boleh menyebabkan aplikasi kehabisan memori.

5. Kesimpulan

Dalam artikel ini, kami mengetahui apa yang menyebabkan UnknownHostException , cara mencegahnya, dan cara mengatasinya.

Seperti biasa, kodnya terdapat di Github.