Rumah >pembangunan bahagian belakang >Golang >Cara Terbaik Mengendalikan Ralat dalam Go?

Cara Terbaik Mengendalikan Ralat dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 10:06:10552semak imbas

How to Best Handle Errors in Go?

Pembolehubah Ralat Standard dalam Go

Di Golang, terdapat berbilang pendekatan idiomatik untuk mengendalikan ralat.

Pembolehubah Ralat Tersuai

Pengarang sering mengisytiharkan pembolehubah ralat tetap berikutan konvensyen penamaan Err.... Untuk contoh:

var (
        ErrSomethingBad = errors.New("some string")
        ErrKindFoo      = errors.New("foo happened")
)

Jenis Ralat

Mengisytiharkan jenis ralat (...Ralat) dengan maklumat khusus yang berguna kepada pemanggil ialah satu lagi amalan biasa.

type SomeError struct {
     // extra information, whatever might be useful to callers
     // (or for making a nice message in `Error()`)
     ExtraInfo int
}
type OtherError string

func (e SomeError) Error() string { /* … */ }
func (e OtherError) Error() string {
        return fmt.Sprintf("failure doing something with %q", string(e))
}

Ralat Ad Hoc

Jika anda tidak menjangkakan pengguna perlu menguji ralat tertentu, anda boleh buat ralat ad hoc menggunakan ralat.Baharu.

func SomepackageFunction() error {
        return errors.New("not implemented")
}

Menggunakan Ralat Pakej Standard

Anda boleh menggunakan ralat yang ditakrifkan dalam pakej standard seperti io.EOF. Walau bagaimanapun, secara amnya adalah lebih baik untuk membuat ralat tersuai untuk pakej anda sendiri.

func SomeFunc() error {
        return io.EOF
}

Antara Muka Ralat

Mencipta antara muka ralat membolehkan anda menyemak gelagat atau jenis tertentu.

type Error interface {
    error
    Timeout() bool   // Is the error a timeout?
    Temporary() bool // Is the error temporary?
}

Kontekstual Ralat

Gunakan teknik ini dengan Go 1.13 atau lebih baru untuk menyediakan konteks tambahan kepada ralat sedia ada.

func SomepackageFunction() error {
    err := somethingThatCanFail()
    if err != nil {
            return fmt.Errorf("some context: %w", err)
    }
}

Pilihan pendekatan bergantung pada sama ada anda menjangka pengguna perlu menguji untuk ralat khusus dan potensi untuk berbilang pengguna untuk melaksanakan pengendalian ralat mereka sendiri.

Atas ialah kandungan terperinci Cara Terbaik Mengendalikan Ralat dalam Go?. 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