


Kaedah untuk menyelesaikan pengecualian sambungan rangkaian Java (ConnectException)
Kaedah untuk menyelesaikan pengecualian sambungan rangkaian Java (ConnectException)
Dalam program Java, pengecualian sambungan rangkaian (ConnectException) ialah ralat biasa. Apabila anda menggunakan program Java untuk mewujudkan sambungan rangkaian ke komputer atau pelayan lain, anda mungkin menghadapi pengecualian ConnectException. Pengecualian ini biasanya disebabkan oleh ketidakupayaan untuk menyambung ke hos sasaran Kemungkinan sebab termasuk ketiadaan hos sasaran, kegagalan rangkaian dan port yang tidak dibuka.
Sebagai tindak balas kepada pengecualian ConnectException, kami boleh mengambil satu siri kaedah dan langkah untuk menyelesaikan masalah. Beberapa kaedah yang biasa digunakan akan diperkenalkan di bawah, dengan contoh kod yang sepadan untuk rujukan.
- Semak hos dan port sasaran
Pertama, kita perlu mengesahkan sama ada hos dan port sasaran adalah betul. Jika alamat IP atau nama domain hos sasaran dimasukkan dengan salah, atau port tidak dibuka dengan betul, pengecualian sambungan akan berlaku. Oleh itu, sebelum menyambung, anda harus menyemak sama ada hos dan port sasaran adalah betul.
Contoh kod:
String host = "example.com"; int port = 80; try { InetAddress inetAddress = InetAddress.getByName(host); boolean reachable = inetAddress.isReachable(10000); if (!reachable) { System.out.println(host + " is not reachable."); } else { System.out.println(host + " is reachable."); // 进一步进行连接操作 } } catch (UnknownHostException e) { System.out.println("Unknown host: " + host); } catch (IOException e) { e.printStackTrace(); }
- Semak tetapan firewall
Satu lagi punca biasa sambungan tidak normal ialah tetapan firewall. Dalam sesetengah kes, pelayan mungkin menyekat akses daripada hos luaran Dalam kes ini, peraturan yang sepadan perlu ditambahkan pada tembok api untuk membenarkan sambungan. Jika ia adalah program klien, anda boleh cuba melumpuhkan tembok api setempat dan menyambung semula.
Contoh kod:
String host = "example.com"; int port = 80; try { // 禁用防火墙 Runtime.getRuntime().exec("sudo systemctl stop firewalld"); // 连接操作 Socket socket = new Socket(host, port); // 其他操作 } catch (IOException e) { e.printStackTrace(); } finally { // 恢复防火墙设置 try { Runtime.getRuntime().exec("sudo systemctl start firewalld"); } catch (IOException e) { e.printStackTrace(); } }
- Tetapkan tempoh tamat masa sambungan
Jika hos sasaran tidak dapat menyambung, ini mungkin pengecualian disebabkan oleh tamat masa sambungan. Anda boleh mengelakkan menunggu lama dengan menetapkan tamat masa sambungan sebelum membuat sambungan. Anda boleh menggunakan kaedahsetSoTimeout
untuk menetapkan tamat masa sambungan.
Contoh kod:
String host = "example.com"; int port = 80; try { Socket socket = new Socket(); socket.connect(new InetSocketAddress(host, port), 10000); // 设置连接超时时间为 10 秒 // 连接成功,执行其他操作 } catch (IOException e) { e.printStackTrace(); }
- Gunakan perpustakaan sambungan rangkaian yang sesuai
Kadangkala, pengecualian sambungan dikendalikan dengan lebih baik dengan menggunakan perpustakaan sambungan rangkaian yang sesuai. Contohnya, menggunakan perpustakaan seperti Apache HttpClient atau OkHttp boleh menyediakan lebih banyak pilihan konfigurasi sambungan, serta mekanisme pengendalian sambungan yang lebih maju.
Sampel kod (menggunakan Apache HttpClient):
String url = "https://example.com"; HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(new URI(url)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); int statusCode = response.statusCode(); if (statusCode == 200) { // 连接成功,执行其他操作 } else { System.out.println("Failed to connect: " + statusCode); }
Melalui kaedah dan kod sampel di atas, anda boleh menyelesaikan pengecualian sambungan rangkaian dalam program Java dengan lebih baik. Dalam aplikasi sebenar, pilih kaedah yang sesuai mengikut situasi tertentu, dan lakukan pengoptimuman dan penyahpepijatan yang munasabah digabungkan dengan mekanisme pengendalian pengecualian untuk memastikan kestabilan dan kebolehpercayaan sambungan rangkaian.
Atas ialah kandungan terperinci Kaedah untuk menyelesaikan pengecualian sambungan rangkaian Java (ConnectException). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pengendalian pengecualian fungsi dalam C++ amat penting untuk persekitaran berbilang benang untuk memastikan keselamatan benang dan integriti data. Pernyataan cuba-tangkap membolehkan anda menangkap dan mengendalikan jenis pengecualian tertentu apabila ia berlaku untuk mengelakkan ranap program atau rasuah data.

Pengendalian pengecualian dalam panggilan rekursif: Mengehadkan kedalaman rekursif: Mencegah limpahan tindanan. Gunakan pengendalian pengecualian: Gunakan pernyataan cuba-tangkap untuk mengendalikan pengecualian. Pengoptimuman rekursi ekor: elakkan limpahan tindanan.

Pengendalian pengecualian C++ membolehkan penciptaan rutin pengendalian ralat tersuai untuk mengendalikan ralat masa jalan dengan membuang pengecualian dan menangkapnya menggunakan blok cuba-tangkap. 1. Buat kelas pengecualian tersuai yang diperolehi daripada kelas pengecualian dan ganti kaedah what() 2. Gunakan kata kunci lontaran untuk membuang pengecualian 3. Gunakan blok cuba-tangkap untuk menangkap pengecualian dan nyatakan jenis pengecualian yang boleh; dikendalikan.

Pengendalian pengecualian dalam ungkapan Lambda C++ tidak mempunyai skopnya sendiri dan pengecualian tidak ditangkap secara lalai. Untuk menangkap pengecualian, anda boleh menggunakan sintaks menangkap ungkapan Lambda, yang membenarkan ungkapan Lambda menangkap pembolehubah dalam skop definisinya, membenarkan pengendalian pengecualian dalam blok cuba-tangkap.

Perkara utama pengendalian pengecualian dalam persekitaran berbilang benang: Pengecualian menangkap: Setiap utas menggunakan blok cuba-tangkap untuk menangkap pengecualian. Kendalikan pengecualian: cetak maklumat ralat atau lakukan logik pengendalian ralat dalam blok tangkapan. Tamatkan utas: Apabila pemulihan adalah mustahil, panggil Thread.stop() untuk menamatkan utas. UncaughtExceptionHandler: Untuk mengendalikan pengecualian yang tidak ditangkap, anda perlu melaksanakan antara muka ini dan menetapkannya pada urutan. Kes praktikal: pengendalian pengecualian dalam kumpulan benang, menggunakan UncaughtExceptionHandler untuk mengendalikan pengecualian yang tidak ditangkap.

Dalam C++ berbilang benang, pengendalian pengecualian mengikut prinsip berikut: ketepatan masa, keselamatan benang dan kejelasan. Dalam amalan, anda boleh memastikan keselamatan benang bagi kod pengendalian pengecualian dengan menggunakan mutex atau pembolehubah atom. Selain itu, pertimbangkan kemasukan semula, prestasi dan ujian kod pengendalian pengecualian anda untuk memastikan ia berjalan dengan selamat dan cekap dalam persekitaran berbilang benang.

Pengendalian pengecualian PHP: Memahami tingkah laku sistem melalui penjejakan pengecualian Pengecualian ialah mekanisme yang digunakan oleh PHP untuk mengendalikan ralat, dan pengecualian dikendalikan oleh pengendali pengecualian. Kelas pengecualian Exception mewakili pengecualian umum, manakala kelas Throwable mewakili semua pengecualian. Gunakan kata kunci lontaran untuk membuang pengecualian dan gunakan kenyataan cuba...tangkap untuk menentukan pengendali pengecualian. Dalam kes praktikal, pengendalian pengecualian digunakan untuk menangkap dan mengendalikan DivisionByZeroError yang mungkin dilemparkan oleh fungsi hitung() untuk memastikan bahawa aplikasi boleh gagal dengan anggun apabila ralat berlaku.

Dalam PHP, pengendalian pengecualian dicapai melalui percubaan, menangkap, akhirnya, dan membuang kata kunci. 1) blok percubaan mengelilingi kod yang boleh membuang pengecualian; 2) Blok tangkapan mengendalikan pengecualian; 3) Akhirnya Blok memastikan bahawa kod itu sentiasa dilaksanakan; 4) Lemparan digunakan untuk membuang pengecualian secara manual. Mekanisme ini membantu meningkatkan keteguhan dan mengekalkan kod anda.
