Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Pembangun Go Membandingkan Mesej Ralat Tanpa Kaedah `GetMessage()`?

Bagaimanakah Pembangun Go Membandingkan Mesej Ralat Tanpa Kaedah `GetMessage()`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-30 14:14:191033semak imbas

How Do Go Developers Compare Error Messages Without a `GetMessage()` Method?

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!

Kenyataan:
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