Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Amalan Idiomatic Go Menangani Pengendalian Ralat?

Bagaimanakah Amalan Idiomatic Go Menangani Pengendalian Ralat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-26 08:46:09852semak imbas

How Do Idiomatic Go Practices Address Error Handling?

Pengendalian Ralat dalam Go: Pendekatan Standard dan Idiomatik

Golang menggalakkan penggunaan pembolehubah ralat untuk menunjukkan berlakunya ralat. Walau bagaimanapun, tiada set pembolehubah ralat piawai yang dipratentukan. Sebaliknya, pembangun dinasihatkan untuk mengamalkan amalan idiomatik untuk mentakrif dan mengendalikan ralat.

Pembolehubah Ralat Tetap

Adalah perkara biasa bagi pakej untuk menentukan pembolehubah ralat tetap dengan nama bermula dengan awalan "Err". Pembolehubah ini biasanya digunakan untuk mewakili keadaan ralat tertentu, membolehkan pemeriksaan ralat mudah. Contohnya:

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

Jenis Ralat

Satu lagi pendekatan idiomatik ialah untuk mentakrifkan jenis ralat tersuai dengan mencipta struct yang melaksanakan antara muka ralat. Jenis ralat ini boleh mengandungi maklumat tambahan yang berkaitan dengan ralat, menjadikannya mudah untuk menyemak jenis ralat tertentu.

type SomeError struct {
    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))
}

Nilai Ralat Ad Hoc

Dalam situasi di mana keadaan ralat tertentu tidak dijangka, adalah mungkin untuk mencipta nilai ralat baharu dengan segera menggunakan fungsi ralat.New(). Kaedah ini mengembalikan nilai ralat dengan mesej ralat tersuai.

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

Menggunakan Ralat Standard

Go menyediakan set terhad ralat standard yang ditakrifkan dalam pakejnya. Ralat ini sering digunakan apabila melaksanakan antara muka atau mematuhi piawaian tertentu. Walau bagaimanapun, secara amnya disyorkan untuk menentukan ralat tersuai untuk keadaan ralat yang lebih khusus dalam pakej.

func SomeFunc() error {
    return io.EOF
}

Antara Muka Ralat

Go juga membenarkan penciptaan antara muka ralat yang mentakrifkan tingkah laku ralat biasa. Antara muka ini membolehkan penyemakan ralat untuk sifat tertentu.

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

Ralat Membungkus dalam Go 1.13

Sejak Go 1.13, ralat sedia ada boleh dibalut dengan konteks atau maklumat tambahan. Ini memudahkan pengendalian ralat dengan menyediakan lebih banyak konteks kepada pengguna tanpa memerlukan jenis ralat tersuai yang meluas.

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

Dengan mengikuti amalan idiomatik ini, pembangun boleh mengendalikan ralat dalam kod Go mereka dengan berkesan, memastikan pengendalian ralat yang jelas dan terurus mekanisme.

Atas ialah kandungan terperinci Bagaimanakah Amalan Idiomatic Go Menangani Pengendalian Ralat?. 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