Rumah > pembangunan bahagian belakang > Golang > Kaedah pengendalian ralat dan amalan berkaitan di Golang

Kaedah pengendalian ralat dan amalan berkaitan di Golang

PHPz
Lepaskan: 2023-04-11 10:05:04
asal
581 orang telah melayarinya

Di Golang, sistem pengecualian yang terdapat dalam hampir setiap bahasa telah dialih keluar sepenuhnya dan digantikan dengan kaedah pengendalian ralat yang lebih ringkas dan fleksibel. Artikel ini bertujuan untuk memperkenalkan kaedah pengendalian ralat dan amalan berkaitan di Golang.

  1. Jenis ralat

Di Golang, jenis ralat ialah unit asas pengendalian ralat. Jenis ralat ialah jenis antara muka terbina dalam, ditakrifkan seperti berikut:

type error interface {
    Error() string
}
Salin selepas log masuk

Antara muka hanya mengandungi satu kaedah Error() dan jenis pulangan ialah rentetan. Oleh itu, sebarang jenis yang melaksanakan antara muka ini boleh digunakan sebagai jenis ralat.

Pustaka standard Golang mengandungi pakej errors yang boleh digunakan untuk mencipta ralat mudah dengan cepat:

import "errors"

func main() {
    err := errors.New("some error occurred")
    fmt.Println(err)
}
Salin selepas log masuk

Sudah tentu, kami juga boleh menyesuaikan jenis ralat:

type MyError struct {
    message string
}

func (e *MyError) Error() string {
    return fmt.Sprintf("MyError: %v", e.message)
}
Salin selepas log masuk
  1. Amalan pengendalian ralat

Di Golang, pengendalian ralat konvensional termasuk dua kaedah: mengembalikan ralat dan panik. Oleh itu, apabila ralat berlaku, kami biasanya mempunyai dua cara berikut untuk mengendalikannya:

2.1 Mengembalikan ralat

Biasanya, kami akan menggunakan ralat sebagai nilai pulangan fungsi untuk pemanggil untuk mengendalikan. Contohnya:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(6, 2)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(result)
}
Salin selepas log masuk

Fungsi ini mengembalikan ralat sebagai nilai pulangan kedua. Apabila memanggil fungsi ini, kami biasanya terlebih dahulu menentukan sama ada ralat itu kosong, dan jika tidak, lakukan pengendalian ralat yang sepadan.

2.2 Panik

Dalam sesetengah kes, apabila atur cara mempunyai ralat yang tidak boleh dipulihkan, kita boleh menggunakan kata kunci panic untuk membuang pengecualian program. Pada ketika ini, program akan menghentikan pelaksanaan dan mencetak mesej ralat yang sepadan.

func checkName(name string) {
    if name == "" {
        panic("name can not be empty")
    }
}

func main() {
    name := ""
    checkName(name)
    // other actions
}
Salin selepas log masuk

Dalam kod di atas, apabila name kosong, atur cara akan membuang pengecualian dan menghentikan pelaksanaan.

  1. Ralat mengendalikan amalan terbaik

Untuk memastikan kebolehbacaan dan kebolehselenggaraan kod, kita perlu mengikuti beberapa amalan terbaik pengendalian ralat.

3.1 Elakkan menyalahgunakan Panic

Di Golang, Panic hanya digunakan untuk mengendalikan ralat yang tidak boleh dipulihkan. Oleh itu, semasa menulis kod, sama ada anda membuang panic atau menangkap panic sendiri, anda harus merawatnya dengan berhati-hati. Cuba hadkan penggunaan panic kepada situasi abnormal yang tidak terkawal.

3.2 Kembalikan kod ralat

Dalam sesetengah kes, ralat boleh diwakili dengan mengembalikan kod ralat. Contohnya, kod ralat 404 Not Found, 500 Internal Server Error, dsb. dalam permintaan HTTP. Mengembalikan kod ralat boleh menyampaikan maklumat ralat dengan berkesan, tetapi anda juga perlu memberi perhatian kepada reka bentuk kod ralat. Kod ralat harus mempunyai atribut unik, boleh dikenal pasti, boleh dibaca dan lain-lain.

3.3 Kembalikan perihalan ralat

Apabila ralat berlaku dalam fungsi, mengembalikan penerangan ralat terperinci boleh membantu pengguna mencari lokasi dan punca ralat dengan cepat. Anda juga boleh menyesuaikan jenis ralat untuk mencapai penerangan ralat yang lebih khusus.

type MyError struct {
    message  string
    location string
}

func (e *MyError) Error() string {
    return fmt.Sprintf("Error occurred in %s: %s", e.location, e.message)
}
Salin selepas log masuk
  1. Kesimpulan

Di Golang, pengecualian dikeluarkan sepenuhnya, dan pengendalian ralat diberikan amalan yang lebih fleksibel dan ringkas. Pengendalian dan penyampaian maklumat ralat yang betul boleh memastikan kestabilan dan kebolehselenggaraan program. Mengikuti amalan terbaik pengendalian ralat di atas boleh membantu kami menulis kod yang lebih mantap, boleh dipercayai dan boleh dibaca.

Atas ialah kandungan terperinci Kaedah pengendalian ralat dan amalan berkaitan di Golang. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan