Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Lanjutkan keupayaan pengendalian pengecualian Golang

Lanjutkan keupayaan pengendalian pengecualian Golang

PHPz
PHPzasal
2024-04-15 17:54:011063semak imbas

Cara untuk melanjutkan keupayaan pengendalian pengecualian Go termasuk menentukan jenis ralat tersuai untuk memberikan maklumat tambahan. Gunakan kata kunci panik untuk membuang pengecualian untuk mengganggu program dan lulus nilai ralat. Tulis pengendali ralat menggunakan fungsi pulih untuk mengendalikan pengecualian yang dilemparkan dan menyambung semula pelaksanaan program.

Lanjutkan keupayaan pengendalian pengecualian Golang

Keupayaan pengendalian pengecualian Go lanjutan

Mekanisme pengendalian pengecualian bahasa Go menyediakan cara yang mudah dan berkesan untuk mengendalikan ralat masa jalan. Walau bagaimanapun, tingkah laku lalainya mungkin terlalu terhad untuk sesetengah senario. Artikel ini akan melihat beberapa cara untuk melanjutkan keupayaan pengendalian pengecualian Go, termasuk menggunakan jenis ralat tersuai, pengecualian lontaran dan pengendali ralat menulis.

Jenis ralat tersuai

Bahasa Go membolehkan anda menentukan jenis ralat anda sendiri, yang boleh membantu meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda. Jenis ralat tersuai boleh membawa maklumat tambahan untuk membantu penyahpepijatan dan penyelesaian masalah.

type MyError struct {
    msg string
}

func (e MyError) Error() string {
    return e.msg
}

func someFunc() (int, error) {
    if somethingWrong {
        return 0, MyError{"Something went wrong!"}
    }
    return 1, nil
}

Lemparkan pengecualian

Dalam Go, kata kunci panik digunakan untuk membuang pengecualian. Pengecualian mengganggu pelaksanaan biasa program dan lulus nilai untuk menunjukkan ralat. panic 关键字用于抛出异常。异常会中断程序的正常执行,并传递一个值来表示错误。

func someFunc() {
    if somethingWrong {
        panic("Something went wrong!")
    }
}

编写错误处理程序

Go 语言提供了 recover 函数来恢复从异常中抛出的错误。它可以将异常转换为 error

func main() {
    defer func() {
        if err := recover(); err != nil {
            // 处理错误
        }
    }()

    someFunc()
}

Pengendali Ralat Penulisan

Bahasa Go menyediakan fungsi recover untuk memulihkan ralat yang dilemparkan daripada pengecualian. Ia menukar pengecualian kepada jenis error dan membolehkan program mengendalikannya.

package main

import (
    "fmt"
    "net/http"
)

type ServerError struct {
    code    int
    message string
}

func (e ServerError) Error() string {
    return fmt.Sprintf("Error %d: %s", e.code, e.message)
}

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if somethingWrong {
            http.Error(w, "Internal Server Error", http.StatusInternalServerError)
            return
        }

        // 其它代码
    })

    http.ListenAndServe(":8080", nil)
}

Satu kes praktikal

🎜🎜Berikut ialah kes praktikal yang menunjukkan cara menggunakan jenis ralat tersuai dan pengendali ralat untuk mengendalikan ralat dalam pelayan web: 🎜rrreee🎜Dengan memperluaskan keupayaan pengendalian pengecualian Go, anda boleh mencipta lebih mantap , aplikasi yang lebih boleh diselenggara. 🎜

Atas ialah kandungan terperinci Lanjutkan keupayaan pengendalian pengecualian 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