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

Cara Terbaik Mengendalikan Ralat dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-27 10:06:10
asal
600 orang telah melayarinya

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")
)
Salin selepas log masuk

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))
}
Salin selepas log masuk

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")
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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?
}
Salin selepas log masuk

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)
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan