Rumah >pembangunan bahagian belakang >Golang >Cara mengendalikan pengecualian dalam golang

Cara mengendalikan pengecualian dalam golang

WBOY
WBOYasal
2023-05-15 12:17:37923semak imbas

Bahasa Go ialah bahasa pengaturcaraan bertaip statik yang menyokong pengaturcaraan berorientasikan objek Berbanding dengan bahasa pengaturcaraan lain, nama tepatnya hendaklah "Go" dan bukannya "golang". Bahasa Go bermula pada tahun 2007 dan merupakan bahasa sumber terbuka yang dibangunkan oleh Google.

Dalam bahasa Go, pengecualian dipanggil "panik" dan tidak seperti mekanisme pengecualian dan menangkap dalam Java atau C#. Jika pengecualian berlaku, ia akan menyebabkan atur cara ditamatkan dan mencetak timbunan mesej ralat yang sepadan.

Dalam Go, pengendalian pengecualian biasanya tidak digunakan, sebaliknya, fungsi digunakan untuk mengembalikan kod ralat untuk mengendalikan pengecualian. Pendekatan ini dipanggil pengendalian ralat. Pengendalian ralat ialah mekanisme yang sangat penting untuk bahasa Go.

Dalam bahasa Go, fungsi boleh mengembalikan nilai jenis ralat tambahan, menunjukkan status pelaksanaan fungsi ini boleh menjadi sifar, menunjukkan bahawa pelaksanaan fungsi berjaya, jika tidak, ia menunjukkan nilai ralat ini. bahawa pelaksanaan gagal. Jika nilai pulangan ralat fungsi dikendalikan, hasil pulangan boleh diperiksa untuk ralat dan pelaporan ralat yang cekap dan terperinci boleh disediakan. Mekanisme pengendalian ralat ini menjadikan bahasa Go sesuai untuk menulis kod yang sangat dipercayai.

Biasanya, kami mengendalikan maklumat ralat dengan mengembalikan ralat dalam fungsi. Pendekatan khusus ialah apabila ralat ditemui, kami akan menetapkan nilai ralat kepada nilai bukan nol dan merekodkan maklumat kontekstual tentang ralat itu. Untuk jenis keadaan ralat lain, ia juga boleh dikendalikan dengan mengembalikan ralat.

Sebagai contoh, seperti berikut:

func foo() error {
    if _, err := os.Stat("my_file"); err != nil {
        if os.IsNotExist(err) {
            return fmt.Errorf("file does not exist")
        } else if os.IsPermission(err) {
            return fmt.Errorf("permission denied")
        } else {
            return err
        }
    }
    return nil
}

Dalam contoh kod di atas, fungsi foo() terlebih dahulu memanggil kaedah os.Stat() untuk menyemak sama ada fail itu wujud tidak Jika ia wujud, nilai jenis ralat akan dikembalikan Kami boleh menanyakan nilai ralat ini untuk menentukan punca sebenar ralat dan mengembalikan maklumat ralat dengan sewajarnya. Kaedah ini lebih fleksibel daripada membuang pengecualian kerana ia membolehkan pemanggil memilih sama ada untuk mengendalikan ralat, dan ia juga membenarkan berbilang mesej ralat dikembalikan pada masa yang sama.

Namun, tidak semua ralat perlu ditangani segera, terutamanya beberapa ralat yang tidak kritikal. Dalam kes ini, pengaturcara boleh memutuskan sama ada untuk mengabaikan ralat ini. Dengan menggunakan "_" dalam kod, nilai pulangan ralat boleh diabaikan. Kaedah ini tidak sesuai untuk semua situasi, tetapi untuk ralat yang tidak menjejaskan pelaksanaan program dan tidak memerlukan sebarang maklumat untuk dilog atau diberi makan balik, menggunakan garis bawah boleh menjadikan kod anda lebih ringkas dan lebih mudah dibaca.

Tangguhan boleh digunakan dalam bahasa Go untuk menangkap pengecualian panik. Fungsi penangguhan adalah untuk melaksanakan beberapa operasi apabila program keluar Operasi ini akan dilakukan tanpa mengira sama ada program keluar secara normal atau tidak normal. Jika fungsi panik terbina dalam dipanggil dalam fungsi tangguh, program akan keluar secara tidak normal. Dalam keadaan biasa, adalah amalan biasa untuk menggunakan tangguh dan pulih untuk menangkap dan mengendalikan pengecualian dalam program. Fungsi pulih disediakan dalam bahasa Go untuk menangkap pengecualian panik dan memulihkan keadaan program selepas program meneruskan pelaksanaan.

Contohnya, seperti berikut:

func main() {
    defer func() {
        if r := recover(); r != nil {
            log.Printf("Recovering from panic: %v", r)
        }
    }()
    panic("this is a panic")
}

Dalam kod di atas, kaedah panik() dipanggil dalam fungsi utama() Apabila atur cara melaksanakan pengecualian panik, panic() The fungsi akan menghentikan program dan mencetak maklumat timbunan ralat pengecualian. Walau bagaimanapun, menggunakan fungsi panik dalam fungsi tangguh boleh mencetuskan panik sekali lagi, tetapi ralat ini akan ditangkap oleh fungsi recover() dalam fungsi tangguh, dan maklumat pemulihan yang berkaitan akan dicetak, supaya atur cara boleh keluar seperti biasa.

Ringkasnya, dalam bahasa Go, mekanisme pengendalian pengecualian jarang digunakan, tetapi lebih banyak penekanan diberikan pada mekanisme pengendalian ralat. Mengendalikan ralat program melalui nilai pulangan fungsi boleh menjadikan logik program lebih jelas dan lebih mudah dibaca, dan menyediakan mekanisme pengendalian ralat dan maklum balas yang lebih baik. Menggunakan tangguh dan pulih dalam program bukan sahaja boleh menghalang program daripada keluar secara tidak normal dengan menangkap pengecualian, tetapi juga menyediakan mekanisme pemulihan untuk keadaan program. Menggunakan teknik ini, anda boleh mengendalikan pengecualian program dengan mudah dalam bahasa Go.

Atas ialah kandungan terperinci Cara mengendalikan pengecualian dalam 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
Artikel sebelumnya:penukaran rentetan golangArtikel seterusnya:penukaran rentetan golang