Rumah >pembangunan bahagian belakang >Golang >Cara Terbaik Mengendalikan Ralat dalam Go?
Di Golang, terdapat berbilang pendekatan idiomatik untuk mengendalikan ralat.
Pengarang sering mengisytiharkan pembolehubah ralat tetap berikutan konvensyen penamaan Err.... Untuk contoh:
var ( ErrSomethingBad = errors.New("some string") ErrKindFoo = errors.New("foo happened") )
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!