cari
Rumahpembangunan bahagian belakangGolangCara golang mengendalikan ralat dan pengecualian

Golang ialah bahasa yang ditaip secara statik dengan mekanisme pengendalian pengecualian yang berkuasa, tetapi setiap pengaturcara berkemungkinan menghadapi ralat dan pengecualian. Artikel ini akan meneroka cara mengendalikan ralat dan pengecualian di Golang dan memperkenalkan beberapa amalan terbaik.

Ralat dan Panik

Di Golang, ralat dan pengecualian ialah dua konsep yang berbeza. Ralat selalunya boleh diramal, situasi biasa atau operasi yang gagal, seperti membuka fail yang tidak wujud atau sambungan rangkaian yang gagal. Sebaliknya, pengecualian biasanya tidak terkawal, keadaan ralat tidak diketahui, seperti ranap program akibat limpahan memori.

Golang mempunyai mekanisme untuk kedua-dua situasi: pengendalian ralat dan pengendalian pengecualian. Apabila ralat berlaku, Golang akan mengembalikan jenis ralat. Apabila pengecualian berlaku, program akan ranap dan panik. Ini menyediakan beberapa cara yang berkesan untuk mengendalikan ralat dan pengecualian.

Pengendalian ralat Golang

Pengendalian ralat di Golang adalah berdasarkan antara muka ralat jenis, yang boleh didapati dalam dokumentasi pakej. Jenis yang melaksanakan antara muka ini mewakili ralat, biasanya rentetan yang menerangkan punca ralat. Apabila fungsi mengembalikan ralat, anda mesti menyemak sama ada ralat adalah sifar. Jika ya, operasi berjaya, jika tidak, operasi gagal dan ralat dikembalikan.

Mari kita lihat contoh mudah menggunakan pengendalian ralat Golang:

package main

import (
    "errors"
    "fmt"
)

func divide(dividend, divisor int) (int, error) {
    if divisor == 0 {
        return 0, errors.New("division by zero")
    }
    return dividend / divisor, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(result)
}

akan mengeluarkan hasil: division by zero

Dalam contoh di atas, kami menentukan fungsi A divide yang menerima dua integer. Jika pembahagi adalah sifar, fungsi mengembalikan ralat. Fungsi main menyemak sama ada operasi berjaya dengan menyemak nilai ralat fungsi divide dan mencetak mesej ralat jika operasi gagal.

Pengendalian pengecualian Golang

Selain pengendalian ralat, Golang juga mempunyai pengendalian pengecualian. Pengendalian pengecualian biasanya digunakan untuk mengendalikan ralat yang tidak dapat diramalkan semasa pengekodan, seperti Panik kerana kekurangan ingatan.

Mekanisme pengendalian pengecualian Golang dilaksanakan melalui fungsi terbina dalam panic() dan recover(). Apabila program memanggil fungsi panik(), program akan ranap dan mencetak mesej ralat dan surih tindanan. Jika fungsi recover() dipanggil dalam blok pernyataan tangguh, panik akan ditangkap dan program akan terus dilaksanakan.

Mari kita gunakan contoh mudah untuk menggambarkan penggunaan panik dan pulih:

package main

import "fmt"

func myFunc() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in myFunc", r)
        }
    }()
    fmt.Println("Calling Panic")
    panic("PANIC")
    fmt.Println("Returned from myFunc")
}

func main() {
    fmt.Println("Calling myFunc")
    myFunc()
    fmt.Println("Returned from myFunc")
}

Hasil keluarannya ialah:

Calling myFunc
Calling Panic
Recovered in myFunc PANIC
Returned from myFunc

Dalam contoh di atas, kita define Fungsi myFunc dicipta, yang akan memanggil fungsi panik dan mencetuskan panik. Dalam fungsi myFunc, kami menggunakan blok pernyataan tangguh untuk memanggil fungsi recover, yang akan menangkap pengecualian dan menggunakannya apabila kawalan kembali kepada proses semasa. Panik dan pulih biasanya digunakan untuk mengendalikan kod rollback dan pemulihan, tetapi tidak disyorkan untuk menggunakan panic() dan recover() dalam keadaan biasa.

Amalan Terbaik Golang

Berikut ialah beberapa amalan terbaik untuk pengendalian ralat dan pengendalian pengecualian di Golang:

  • Huraikan dengan terperinci seperti kemungkinan kesilapan.
  • Adalah lebih baik menggunakan ralat dan bukannya pengecualian dalam Golang. Go direka untuk mengendalikan keadaan ralat tanpa memerlukan pengecualian.
  • Gunakan pakej fmt untuk mengeluarkan ralat dalam pengendalian ralat, supaya lebih banyak maklumat berguna boleh dikeluarkan.
  • Gunakan tupel untuk mengembalikan ralat apabila boleh.
  • Berikan nama ralat yang bermakna.

Kesimpulan

Di Golang, ralat dan pengendalian pengecualian adalah aspek utama yang perlu ditangani oleh mana-mana pembangun. Dalam artikel ini, kami meneroka perbezaan antara ralat dan pengecualian, dan memperkenalkan ralat dan mekanisme pengendalian pengecualian yang paling biasa digunakan di Golang. Pengetahuan ini akan membantu anda menulis kod yang boleh diselenggara dan meminimumkan kemungkinan ralat.

Atas ialah kandungan terperinci Cara golang mengendalikan ralat dan pengecualian. 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
GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?Mar 03, 2025 pm 05:17 PM

Artikel ini menerangkan mekanisme import pakej Go: Dinamakan import (mis., Import & quot; fmt & quot;) dan import kosong (mis., Import _ & quot; fmt & quot;). Dinamakan import membuat kandungan pakej boleh diakses, sementara import kosong hanya melaksanakan t

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?Mar 03, 2025 pm 05:22 PM

Artikel ini menerangkan fungsi Newflash () Beego untuk pemindahan data antara halaman dalam aplikasi web. Ia memberi tumpuan kepada menggunakan NewFlash () untuk memaparkan mesej sementara (kejayaan, kesilapan, amaran) antara pengawal, memanfaatkan mekanisme sesi. Limita

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?Mar 03, 2025 pm 05:18 PM

Artikel ini memperincikan penukaran yang cekap hasil pertanyaan MySQL ke dalam kepingan struct go. Ia menekankan menggunakan kaedah imbasan pangkalan data/SQL untuk prestasi optimum, mengelakkan parsing manual. Amalan terbaik untuk pemetaan medan struct menggunakan tag db dan robus

Bagaimana saya menulis objek dan stub untuk ujian di GO?Bagaimana saya menulis objek dan stub untuk ujian di GO?Mar 10, 2025 pm 05:38 PM

Artikel ini menunjukkan penciptaan dan stub di GO untuk ujian unit. Ia menekankan penggunaan antara muka, menyediakan contoh pelaksanaan mengejek, dan membincangkan amalan terbaik seperti menjaga mocks fokus dan menggunakan perpustakaan penegasan. Articl

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?Mar 10, 2025 pm 03:20 PM

Artikel ini meneroka kekangan jenis adat Go untuk generik. Ia memperincikan bagaimana antara muka menentukan keperluan jenis minimum untuk fungsi generik, meningkatkan keselamatan jenis dan kebolehgunaan semula kod. Artikel ini juga membincangkan batasan dan amalan terbaik

Bagaimana cara menulis fail dalam bahasa Go dengan mudah?Bagaimana cara menulis fail dalam bahasa Go dengan mudah?Mar 03, 2025 pm 05:15 PM

Artikel ini memperincikan penulisan fail yang cekap di GO, membandingkan OS.WriteFile (sesuai untuk fail kecil) dengan os.openfile dan buffered menulis (optimum untuk fail besar). Ia menekankan pengendalian ralat yang teguh, menggunakan penangguhan, dan memeriksa kesilapan tertentu.

Bagaimana anda menulis ujian unit di GO?Bagaimana anda menulis ujian unit di GO?Mar 21, 2025 pm 06:34 PM

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?Mar 10, 2025 pm 05:36 PM

Artikel ini meneroka menggunakan alat pengesanan untuk menganalisis aliran pelaksanaan aplikasi GO. Ia membincangkan teknik instrumentasi manual dan automatik, membandingkan alat seperti Jaeger, Zipkin, dan OpenTelemetry, dan menonjolkan visualisasi data yang berkesan

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)