Bagaimana untuk Mengendalikan Ralat daripada Goroutines melalui Saluran dalam Go?

Patricia Arquette
Lepaskan: 2024-11-13 01:01:01
asal
174 orang telah melayarinya

How to Handle Errors from Goroutines via Channels in Go?

Mengendalikan Ralat daripada Goroutines melalui Saluran

Dalam Go, fungsi lazimnya mengembalikan nilai dan ralat untuk menunjukkan hasil operasi. Walau bagaimanapun, apabila melaksanakan fungsi sedemikian dalam goroutine dan menyampaikan hasil melalui saluran, pengendalian ralat dengan cekap menjadi penting.

Untuk menangani perkara ini, pendekatan biasa ialah merangkum kedua-dua nilai dan ralat dalam struktur tersuai. Struktur ini kemudiannya dihantar melalui saluran, membenarkan pemanggil untuk mendapatkan kedua-dua keputusan dan sebarang ralat yang berpotensi.

Pertimbangkan coretan kod berikut:

type Result struct {
    Message string
    Error error
}

ch := make(chan Result)
Salin selepas log masuk

Dalam contoh ini, struct Hasil memegang kedua-dua Mesej (rentetan) dan Ralat. Saluran ch dicipta untuk menghantar struct ini antara goroutine dan pemanggil.

Apabila menggunakan fungsi createHashedPassword dalam goroutine, hasilnya boleh dihantar melalui saluran ch menggunakan sintaks berikut:

go func() {
  result, err := createHashedPassword(password)
  
  //If error occurred send error
  if err != nil {
      errorResult := Result{Err:err}
      ch <- errorResult
         
  }    
}() 
Salin selepas log masuk

Di bahagian penerima saluran, pemanggil boleh mendapatkan semula struktur Hasil dan mengendalikan kedua-dua mesej dan sebarang kemungkinan ralat:

result := <-ch
if result.Error != nil {
  // Handle error
} else {
  // Use result.Message
}
Salin selepas log masuk

Dengan menggunakan teknik ini, ia menjadi mungkin untuk mengendalikan ralat dengan lancar dijana dalam goroutine sambil masih mengekalkan mekanisme komunikasi berasaskan saluran yang bersih dan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat daripada Goroutines melalui Saluran 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