Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Membandingkan Ralat dalam Go dengan Amanah?

Bagaimanakah Saya Boleh Membandingkan Ralat dalam Go dengan Amanah?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-27 13:46:11575semak imbas

How Can I Reliably Compare Errors in Go?

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!

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