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

Perbandingan pengendalian ralat dan pengendalian pengecualian dalam fungsi golang

王林
Lepaskan: 2024-04-25 08:12:02
asal
458 orang telah melayarinya

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
}
Salin selepas log masuk

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

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

异常处理

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

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

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

实战案例

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

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

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 完成操作
}
Salin selepas log masuk
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!

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