Rumah  >  Artikel  >  pembangunan bahagian belakang  >  kod ralat golang

kod ralat golang

PHPz
PHPzasal
2023-05-21 20:21:36689semak imbas

Golang ialah bahasa pengaturcaraan yang agak baharu, tetapi sejak beberapa tahun lalu ia telah berkembang menjadi bahasa pengaturcaraan peringkat tinggi yang dipandang tinggi kerana kesederhanaan, kecekapan dan kemudahan pembelajarannya. Pengendalian ralat adalah bahagian yang tidak dapat dielakkan dalam menulis kod Golang. Artikel ini akan meneroka mekanisme pengendalian ralat dan kod ralat biasa di Golang.

Pengendalian ralat di Golang

Mekanisme pengendalian ralat di Golang terutamanya bergantung pada jenis ralat Fungsi boleh mengembalikan nilai ralat jenis, dan nilai ini akan dihantar ke tempat di mana ralat fungsi dipanggil , yang boleh menyemak sama ada nilai adalah nil. Jika tidak nil, ini bermakna fungsi mengembalikan ralat, dan pemanggil mesti mengendalikan ralat ini dan melakukan operasi yang sesuai. Jika tiada, ia bermakna fungsi itu berjaya dilaksanakan.

Berikut ialah contoh mudah yang menunjukkan cara mengembalikan ralat dalam Golang:

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

func main() {
    result, err := divide(6, 0)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println(result)
}

Dalam contoh di atas, fungsi bahagi menyemak sama ada penyebutnya ialah 0. Jika 0, nilai jenis ralat baharu yang mengandungi mesej ralat "bahagi dengan sifar" dikembalikan. Dalam fungsi utama, kami menyemak sama ada nilai ralat yang dikembalikan adalah sifar dan mencetak mesej ralat jika tidak.

Kod ralat

Selain jenis ralat, terdapat juga mekanisme pengendalian ralat di Golang iaitu kod ralat. Kod ralat ialah nilai integer yang mengenal pasti pelbagai jenis ralat. Biasanya, kod ralat ini ditakrifkan dalam pembolehubah peringkat pakej dan dikongsi antara pelbagai fungsi.

Berikut ialah contoh yang menunjukkan fungsi menggunakan kod ralat:

var (
    ErrBadRequest  = errors.New("bad request")
    ErrUnauthorized = errors.New("unauthorized")
)

func getUser(userId int) (user, int, error) {
    if userId <= 0 {
        return user{}, 0, ErrBadRequest
    } else if userId == 123 {
        return user{name: "Alice", age: 30}, 200, nil
    }
    return user{}, 0, ErrUnauthorized
}

func main() {
    user, status, err := getUser(123)
    if err != nil {
        if err == ErrBadRequest {
            fmt.Println("Error:", err)
            // 返回 400 所代表的错误码
            return
        } else if err == ErrUnauthorized {
            fmt.Println("Error:", err)
            // 返回 401 所代表的错误码
            return
        }
    }
    fmt.Println("User:", user)
    fmt.Println("Status:", status)
}

Dalam contoh ini, kami mentakrifkan dua kod ralat: ErrBadRequest dan ErrUnauthorized. Dalam fungsi getUser, jika ID pengguna yang diluluskan adalah kurang daripada atau sama dengan 0, ErrBadRequest dikembalikan jika ID pengguna bersamaan dengan 123, struktur pengguna, kod status 200 dan nol dikembalikan, menunjukkan kejayaan; dikembalikan.

Dalam fungsi utama, kami menyemak nilai ralat jenis. Kami mengembalikan kod ralat HTTP 400 jika ralat adalah ErrBadRequest dan 401 jika ralat adalah ErrUnauthorized. Jika tidak, kami mencetak maklumat tentang pengguna dan kod status.

Ringkasan

Mekanisme pengendalian ralat di Golang membolehkan pembangun mengenal pasti ralat dan pengecualian dengan mudah dalam fungsi pengendali. Jenis ralat adalah teras pengendalian ralat di Golang Ia menyediakan maklumat ralat asas dan kaedah pengendalian. Mekanisme kod ralat menyediakan kaedah pengendalian ralat yang lebih fleksibel dan boleh menentukan kod ralat yang berbeza untuk jenis ralat yang berbeza. Mekanisme kod ralat boleh memberikan penyelesaian yang lebih elegan apabila menangani sejumlah besar ralat. Sama ada anda menggunakan kod ralat atau objek ralat, anda harus memilih mekanisme pengendalian ralat yang sesuai berdasarkan keperluan perniagaan.

Atas ialah kandungan terperinci kod ralat golang. 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
Artikel sebelumnya:pakej golang tersembunyiArtikel seterusnya:pakej golang tersembunyi