Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Pembangun Go Membandingkan Mesej Ralat Tanpa Kaedah `GetMessage()`?
Membandingkan Mesej Ralat dalam Go
Apabila mengendalikan ralat dalam Java, pembangun sering bergantung pada kaedah Exception.GetMessage() untuk mengekstrak penerangan ralat . Golang, bagaimanapun, tidak mempunyai kaedah terbina dalam untuk mendapatkan semula mesej sedemikian.
Untuk menangani perkara ini, pembangun Go menggunakan pendekatan tersuai untuk membandingkan mesej ralat. Daripada menyimpan mesej dalam objek ralat, mereka mencipta pembolehubah ralat peringkat pakej yang merangkumi kod atau penerangan ralat tertentu:
var errExample = errors.New("this is an example")
Apabila mengembalikan ralat, pembangun menetapkan pembolehubah ini untuk menunjukkan jenis ralat tertentu yang berlaku . Coretan berikut menunjukkan pendekatan ini:
if some_err := some_package.DoSomething(); some_err != nil { if some_err == errExample { // handle it } }
Dalam kes ini, pernyataan if menyemak sama ada ralat yang dikembalikan oleh DoSomething() adalah sama dengan pembolehubah errExample. Jika ya, ralat itu dikendalikan dengan sewajarnya.
Untuk meluaskan jangkauan pembolehubah ralat ini, pembangun boleh mengeksportnya di luar pakej menggunakan kata kunci eksport:
var ErrExample = errors.New("this is an example")
Ini membenarkan kod dalam berbeza pakej untuk dibandingkan dengan pembolehubah ralat yang dieksport:
if err == somepackage.ErrExample { // handle it }
Dengan mengikuti pendekatan ini, pembangun boleh membandingkan mesej ralat di Golang dengan berkesan, walaupun bahasa tidak mempunyai kaedah GetMessage() khusus.
Pertimbangan Tambahan:
Adalah penting untuk mengelakkan membandingkan mesej ralat terhadap rentetan yang dikembalikan oleh kaedah ralat.Error() . Ini boleh membuat kod rapuh, kerana mesej ralat tertakluk kepada perubahan dari semasa ke semasa. Sebaliknya, adalah disyorkan untuk menggunakan pembolehubah ralat yang ditetapkan untuk memastikan konsistensi dalam pengendalian ralat.
Atas ialah kandungan terperinci Bagaimanakah Pembangun Go Membandingkan Mesej Ralat Tanpa Kaedah `GetMessage()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!