Bagaimana Anda Boleh Menangkap Panik dalam Go?

Barbara Streisand
Lepaskan: 2024-11-12 17:47:02
asal
729 orang telah melayarinya

How Can You Catch Panics in Go?

Menangkap Panik dalam Go

Apabila mengendalikan peristiwa yang tidak dijangka dalam Go, panik ialah mekanisme biasa untuk menunjukkan ralat kritikal. Walau bagaimanapun, kadangkala adalah wajar untuk mengendalikan panik ini dengan anggun dan meneruskan pelaksanaan.

Dalam kod yang disediakan:

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

Jika tiada hujah fail disediakan, program menjadi panik kerana kehabisan -indeks julat. Dalam kes sedemikian, kita boleh menggunakan fungsi recover() untuk menangkap dan mengendalikan panik.

Menggunakan recover() untuk Mengendalikan Panik

Fungsi recover() membenarkan program untuk mendapatkan semula kawalan selepas panik. Ia boleh digunakan dalam fungsi tertunda, yang akan dilaksanakan walaupun panik berlaku dalam fungsi utama.

func main() {
    defer func() {
        if recovered := recover(); recovered != nil {
            // Handle the panic here
            fmt.Println("File not provided")
        }
    }()

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

Dalam kod yang diubah suai ini, fungsi recover() digunakan dalam fungsi tertunda. Jika panik berlaku, recover() akan mengembalikan nilai yang dihantar kepada panggilan panik. Dalam kes ini, ia akan mengembalikan sifar kerana kami tidak menyatakan sebarang nilai panik.

Dengan menyemak nilai pulangan recover(), kami boleh mengendalikan panik dengan sewajarnya, seperti mencetak mesej ralat dan meneruskan pelaksanaan .

Atas ialah kandungan terperinci Bagaimana Anda Boleh Menangkap Panik dalam Go?. 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