Bagaimanakah Saya Boleh Menangkap Ralat 'Sambungan Hilang' atau 'Sambungan Ditolak' Secara Khusus dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-06 13:57:03
asal
1004 orang telah melayarinya

How Can I Specifically Catch

Menangkap Ralat Khusus dalam Go

Go menawarkan pengendalian ralat yang fleksibel, membolehkan pembangun menangani jenis ralat tertentu dalam kod mereka. Katakan anda sedang bekerja dengan fungsi rpc.Dail dan hanya mahu mengendalikan ralat "sambungan terputus" atau "sambungan ditolak".

Menggunakan ralat.Is dan ralat.As

Versi Go Moden menyediakan ralat.Is dan ralat.Sebagai fungsi untuk pengendalian ralat yang cekap. Dalam kes anda:

if errors.Is(err, syscall.ECONNREFUSED) {
  // Handle connection refused error
} else if errors.As(err, &net.OpError{}) {
  // Handle other network errors (e.g., connection lost)
}
Salin selepas log masuk

Menyemak Jenis Ralat

Pendekatan lain ialah menyemak jenis ralat secara langsung. Seperti yang dinyatakan dalam soalan anda, pakej bersih mentakrifkan pelbagai jenis ralat, termasuk net.Ralat untuk ralat rangkaian:

if _, ok := err.(net.Error); ok {
  // Handle net.Error instance
}
Salin selepas log masuk

Dokumentasi Ralat Membaca

Untuk memahami semua kemungkinan ralat yang dikembalikan oleh fungsi, anda boleh merujuk dokumentasi. Contohnya, godoc untuk rpc.Dial memberikan butiran tentang ralat berbeza yang boleh dipulangkan.

Pendekatan Warisan

Sebagai langkah terakhir, anda boleh membandingkan rentetan ralat kepada ralat yang dijangkakan:

if strings.Contains(err.Error(), "connection lost") {
  // Handle connection lost error
}
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini tidak disyorkan kerana ia terdedah kepada positif atau negatif palsu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap Ralat 'Sambungan Hilang' atau 'Sambungan Ditolak' Secara Khusus dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!