Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perbandingan pengendalian ralat dan pengendalian pengecualian dalam fungsi golang

Perbandingan pengendalian ralat dan pengendalian pengecualian dalam fungsi golang

王林
王林asal
2024-04-25 08:12:02417semak imbas

Bahasa Go menyediakan dua mekanisme pengendalian ralat: 1. Pengendalian ralat: gunakan parameter ralat untuk mengembalikan ralat, dan pemanggil perlu mengendalikannya secara eksplisit 2. Pengendalian pengecualian: gunakan fungsi panik() dan pulih() untuk menaikkan dan tangkapan pengecualian. Senario praktikal: Pengendalian ralat sering digunakan untuk operasi fail (sifar kembali menunjukkan kejayaan, nilai bukan sifar menunjukkan ralat), dan pengendalian pengecualian sesuai untuk permintaan rangkaian (pengecualian dilemparkan apabila ralat berlaku).

Perbandingan pengendalian ralat dan pengendalian pengecualian dalam fungsi golang

Pengendalian ralat dan pengendalian pengecualian dalam bahasa Go: perbandingan dan amalan

Bahasa Go menyediakan dua mekanisme utama untuk mengendalikan ralat dalam fungsi: pengendalian ralat dan pengendalian pengecualian. Mereka mempunyai fungsi yang berbeza dan senario yang boleh digunakan, dan memahami perbezaannya adalah penting untuk menulis kod yang mantap dan boleh diselenggara.

Pengendalian Ralat

Pengendalian ralat dilakukan dengan mengembalikan ralat daripada fungsi menggunakan parameter err. Ralat biasanya diwakili oleh nilai nil, yang mengembalikan nilai bukan sifar jika ralat berlaku. err 参数从函数中返回错误来完成的。错误通常由值 nil 表示,如果发生错误,则返回非零值。

func myFunction() error {
    // ... 进行一些操作
    if err != nil {
        return err
    }
    
    // 返回 nil 表示没有发生错误
    return nil
}

调用带有 err 参数的函数时,必须显式检查错误并根据需要进行处理。

err := myFunction()
if err != nil {
    // 处理错误
}

异常处理

异常处理使用 panic()recover() 函数。panic() 会引发异常,而 recover() 可以捕获并处理该异常。

func myFunction() {
    // ... 进行一些操作
    if condition {
        panic("发生了错误")
    }
}

func main() {
    defer func() {
        if err := recover(); err != nil {
            // 处理异常
        }
    }
    
    myFunction()
}

实战案例

错误处理:一个打开文件的函数,会返回 nil

func openFile(filename string) (*os.File, error) {
    file, err := os.Open(filename)
    if err != nil {
        return nil, err
    }
    return file, nil
}

Apabila memanggil fungsi dengan parameter err, anda mesti menyemak ralat secara eksplisit dan mengendalikannya jika perlu.

func makeRequest() {
    resp, err := http.Get("example.com")
    if err != nil {
        panic(err)
    }
    // 使用 resp 完成操作
}
Pengendalian pengecualian

🎜🎜Pengendalian pengecualian menggunakan fungsi panic() dan recover(). panic() membuang pengecualian dan recover() boleh menangkap dan mengendalikan pengecualian. 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜🎜Pengendalian ralat: 🎜Fungsi yang membuka fail akan mengembalikan nil untuk menunjukkan kejayaan, dan nilai bukan sifar untuk menunjukkan ralat. 🎜rrreee🎜🎜Pengendalian pengecualian: 🎜Fungsi yang melaksanakan permintaan rangkaian dan membuang pengecualian apabila ralat ditemui. 🎜rreeee

Atas ialah kandungan terperinci Perbandingan pengendalian ralat dan pengendalian pengecualian dalam fungsi 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