Membandingkan Mesej Ralat dalam Go
Dalam Go, ralat hanyalah nilai yang melaksanakan antara muka ralat. Ini bermakna ralat boleh dibandingkan menggunakan operator kesamarataan standard (== dan !=). Walau bagaimanapun, secara amnya tidak disyorkan untuk membandingkan ralat dengan perwakilan rentetannya yang dikembalikan oleh kaedah Ralat(). Ini kerana perwakilan rentetan boleh berubah dari semasa ke semasa, yang boleh menjadikan kod anda rapuh.
Cara yang lebih dipercayai untuk membandingkan ralat ialah menggunakan pembolehubah peringkat pakej yang menyimpan ralat yang dijangkakan. Pembolehubah ini boleh digunakan untuk membandingkan terhadap ralat yang dikembalikan oleh fungsi. Contohnya:
package mypkg import ( "errors" ) // ErrExample is an example error. var ErrExample = errors.New("this is an example") // DoSomething returns an error if something goes wrong. func DoSomething() error { // ... // If something goes wrong, return the error. return ErrExample }
Untuk membandingkan dengan ralat yang dikembalikan oleh DoSomething(), anda boleh menggunakan kod berikut:
if err := DoSomething(); err != nil { // Handle the error. }
Jika ralat yang dikembalikan oleh DoSomething() adalah sama dengan ErrExample, maka pernyataan if akan dilaksanakan.
Anda juga boleh mengeksport pembolehubah peringkat pakej jika kod di luar pakej perlu mengakses kesilapan. Contohnya:
package mypkg import ( "errors" ) // ErrExample is an example error. var ErrExample = errors.New("this is an example") // Export the error. var ErrExample = ErrExample
Untuk menggunakan ralat yang dieksport, anda boleh menggunakan kod berikut:
if err := somepackage.DoSomething(); err != nil { // Handle the error. }
Jika ralat dikembalikan oleh somepackage.DoSomething() adalah sama dengan mypkg.ErrExample , maka pernyataan if akan dilaksanakan.
Dengan menggunakan pembolehubah peringkat pakej untuk membandingkan ralat, anda boleh membuat kod anda lebih dipercayai dan kurang rapuh.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Ralat dalam Go dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!