Bagaimana Saya Boleh Menangani Panik dalam Go dengan Fungsi `recover()`?

Linda Hamilton
Lepaskan: 2024-11-19 01:13:02
asal
300 orang telah melayarinya

How Can I Handle Panics in Go with the `recover()` Function?

Mengendalikan Panik dengan Pemulihan di Golang

Apabila ralat yang tidak dijangka berlaku dalam Go, menyebabkan panik, ia menghentikan pelaksanaan program dengan serta-merta. Walau bagaimanapun, fungsi recover() menyediakan cara untuk mengendalikan panik, membenarkan atur cara untuk menghalangnya daripada ranap.

Pertimbangkan kod berikut, apabila panik berlaku apabila tiada hujah fail disediakan:

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open(os.Args[1])
    if err != nil {
        fmt.Println("Could not open file")
    }
    fmt.Printf("%s", file)
}
Salin selepas log masuk

Untuk mengendalikan panik ini, kita boleh menggunakan fungsi recover() dalam fungsi tertunda:

func main() {
    defer func() {
        if err := recover(); err != nil {
            fmt.Println("Could not open file")
        }
    }()
    
    file, err := os.Open(os.Args[1])
    if err != nil {
        panic(err)
    }
    fmt.Printf("%s", file)
}
Salin selepas log masuk

Jika ralat berlaku semasa membuka fail, panik ditangkap oleh fungsi recover(), dan mesej "Tidak dapat membuka fail" dicetak dan bukannya ranap program.

Dalam Go, panik tidak seharusnya menjadi mekanisme pengendalian ralat lalai . Semakan ralat eksplisit biasanya diutamakan. Walau bagaimanapun, fungsi recover() menyediakan cara untuk mengendalikan kes ekstrem yang melampau dengan panik diperlukan, membenarkan atur cara mengekalkan keadaan berfungsi walaupun ralat yang tidak dijangka berlaku.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menangani Panik dalam Go dengan Fungsi `recover()`?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan