Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Semak Jenis Ralat Tersuai dalam Go?

Bagaimanakah Saya Boleh Semak Jenis Ralat Tersuai dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-25 20:43:19793semak imbas

How Can I Check the Type of a Custom Error in Go?

Menyesuaikan Jenis Ralat dalam Go

Memperkayakan aplikasi Go anda dengan jenis ralat tersuai meningkatkan pengendalian ralat, tetapi memanipulasi jenis tersuai ini boleh menjadi mencabar. Mari kita mendalami isu menyemak jenis ralat tersuai.

Masalahnya

Pertimbangkan jenis ralat tersuai berikut:

type ModelMissingError struct {
    msg string // description of error
}

func (e *ModelMissingError) Error() string { return e.msg }

Dalam satu kaedah, kami boleh membuang ralat tersuai:

return Model{}, &ModelMissingError{"no model found for id"}

Pertanyaan

Untuk menentukan sama ada ralat jenis tersuai tertentu, kita perlu menyemak jenisnya. Walau bagaimanapun, pendekatan if err == model.ModelMissingError gagal.

The Solution

Go menyediakan koma ok idiom untuk menyemak penegasan jenis:

serr, ok := err.(*model.ModelMissingError)

Pernyataan ini menegaskan bahawa pembolehubah ralat err memegang model.ModelMissingError type dan memberikan nilai asas kepada pembolehubah serr. Jika err tidak mempunyai jenis yang dijangkakan, pernyataan itu akan mengembalikan sifar untuk serr dan false untuk ok.

Dengan menggunakan simpulan bahasa ok koma, kami boleh mengesahkan jenis ralat tersuai dengan cekap dan mengendalikannya dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak Jenis Ralat Tersuai dalam Go?. 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:Berhenti awal untuk menang!Artikel seterusnya:Berhenti awal untuk menang!