Dalam bahasa Golang, fungsi ialah bahagian penting dalam logik pelaksanaan asas, dan pengendalian ralat merupakan aspek penting bagi kebanyakan fungsi. Golang menyediakan mekanisme pengendalian ralat yang berkuasa melalui jenis Ralat. Dalam artikel ini, kami akan meneroka kemahiran aplikasi jenis ralat bagi fungsi Golang.
1. Memahami jenis Ralat Golang
Dalam Golang, Ralat ialah jenis antara muka dengan hanya satu kaedah Ralat():
type error interface { Error() string }
Sebarang jenis hanya perlu melaksanakan kaedah Ralat Ia boleh menjadi jenis ralat Kaedah ini mengembalikan rentetan yang meringkaskan sebab ralat. Oleh itu, jenis Ralat memainkan peranan bersatu dalam mengendalikan ralat di Golang.
2. Mengembalikan ralat
Fungsi adalah bahagian penting dalam Golang. Walau bagaimanapun, apabila fungsi mengembalikan ralat, Golang biasanya menggunakan nilai pulangan berasingan untuk menunjukkan ralat. Contohnya, semasa operasi fail, jika operasi gagal, ralat dikembalikan. Fungsi operasi fail biasa adalah seperti berikut:
func Open(name string) (*File, error) func (f *File) Read(b []byte) (n int, err error) func (f *File) Write(b []byte) (n int, err error) fucn (f *File) Seek(offset int64, whence int) (ret int64, err error)
Nilai terakhir yang dikembalikan oleh fungsi ini biasanya ralat. Kami boleh menjadikan kod kami lebih mantap dengan mengembalikan jenis ralat yang sesuai untuk mengendalikan ralat.
Selepas mengembalikan ralat, gunakan sintaks yang serupa dengan yang berikut untuk mengendalikannya:
_, err := f.Read(b) if err != nil { log.Fatal(err) }
Dalam contoh ini, jika terdapat ralat membaca fail, atur cara akan mengeluarkan log "err" .
3. Perbandingan jenis ralat
Di Golang, terdapat tiga cara untuk membandingkan jenis ralat.
1. Gunakan rentetan untuk perbandingan
Kita boleh membandingkan rentetan ralat dengan rentetan lain untuk menghasilkan tindakan yang sepadan:
if err.Error() == "file not found" { return }
2. Gunakan ralat khusus Jenis perbandingan
Untuk beberapa jenis ralat tertentu, kita boleh menggunakan penegasan jenis untuk membandingkannya. Sebagai contoh, katakan kita mempunyai fungsi DoSomething yang mengembalikan jenis ralat tertentu, kita boleh menyemak jenis ralat menggunakan penegasan jenis seperti berikut:
_, err := DoSomething() if e, ok := err.(*CustomError); ok { fmt.Println(e.CustomMessage) }
Jika ralat berlaku semasa DoSomething dilaksanakan, kemudian gunakan penegasan jenis untuk menyemak jenis ralat. Jika jenis ralat yang dikembalikan ialah CustomError, CustomMessage akan dikeluarkan kepada konsol.
3. Gunakan kod ralat untuk membandingkan
Akhir sekali, kita boleh menggunakan kod ralat untuk membandingkan jenis ralat. Kod ralat ialah pemalar tersuai, biasanya disertakan dalam jenis ralat tersuai. Berikut ialah contoh:
const ( ErrCodeFileNotFound = iota + 1 ErrCodeInvalidParam ) type CustomError struct { Code int CustomMessage string } func (e *CustomError) Error() string { return fmt.Sprintf("%d:%s", e.Code, e.CustomMessage) } func DoSomething() error { return &CustomError{ Code: ErrCodeFileNotFound, CustomMessage: "file not found", } } func main() { err := DoSomething() if e, ok := err.(*CustomError); ok && e.Code == ErrCodeFileNotFound { fmt.Println(e.CustomMessage) } }
Dalam contoh ini, kami mentakrifkan dua pemalar kod ralat (ErrCodeFileNotFound dan ErrCodeInvalidParam) dan menggunakannya untuk membandingkan jenis ralat. Kemudian kami menentukan jenis ralat tersuai, CustomError, yang mengandungi kod ralat dan mesej tersuai. Akhir sekali, kami mentakrifkan fungsi DoSomething yang mengembalikan contoh jenis CustomError.
Akhir sekali, kami menggunakan kod ralat dalam utama untuk membandingkan jenis ralat dan mencetak mesej ralat yang sepadan.
Ringkasnya, jenis Ralat Golang ialah cara yang berkesan untuk mengendalikan ralat. Dengan jenis ralat yang betul, kami boleh mengendalikan pelbagai keadaan ralat dengan lebih baik, menjadikan kod kami lebih mantap dan cekap.
Atas ialah kandungan terperinci Petua aplikasi jenis ralat untuk fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!