Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengendalikan ralat jenis tersuai di Golang?

Bagaimana untuk mengendalikan ralat jenis tersuai di Golang?

WBOY
WBOYasal
2024-06-05 12:47:561040semak imbas

Mencipta jenis ralat tersuai membolehkan anda mengendalikan ralat khusus domain di Golang. Selepas anda membuat jenis ralat, anda boleh menggunakan pernyataan ralat untuk menyemak sama ada jenis ralat sepadan dengan jenis ralat tersuai. Jika terdapat padanan, anda boleh mengakses mesej ralat tersuai. Jika tidak, kendalikan jenis ralat lain.

如何处理 Golang 中自定义类型的错误?

Cara mengendalikan ralat taip tersuai di Golang

Mencipta jenis ralat tersuai di Golang ialah cara terbaik untuk menentukan ralat khusus domain. Ini membolehkan anda membuat ralat yang mengandungi maklumat tambahan tentang ralat tersebut.

Buat jenis ralat tersuai

Untuk mencipta jenis ralat tersuai, anda boleh menggunakan fungsi errors.New() terbina dalam: errors.New() 函数:

package errors

import "fmt"

type MyError struct {
    msg string
}

func New(msg string) *MyError {
    return &MyError{msg: msg}
}

func (m *MyError) Error() string {
    return fmt.Sprintf("自定义错误:%s", m.msg)
}

Error() 方法返回错误消息。它应该是实现了 error 接口的唯一方法,即它应该返回字符串类型的消息。

处理自定义错误

一旦创建了自定义错误类型,就可以使用 errortype assersions

func process() error {
    // 调用可能有错误的方法
    if err := doSomething(); err != nil {
        if me, ok := err.(*MyError); ok {
            // 处理自定义错误
            fmt.Println(me.msg)
        } else {
            // 处理其他类型的错误
            return err
        }
    }
    return nil
}

Error() kaedah Kembalikan mesej ralat. Ia sepatutnya menjadi satu-satunya kaedah yang melaksanakan antara muka ralat, iaitu ia harus mengembalikan mesej jenis rentetan. . nombor ke Contoh fungsi yang mungkin menimbulkan ralat tersuai semasa memanggil rentetan:

func convertToString(num int) (string, error) {
    if num < 0 {
        return "", errors.New("数字必须为非负数")
    }
    return strconv.Itoa(num), nil
}
Anda boleh menggunakan penegasan ralat untuk mengendalikan ralat tersuai semasa memanggil fungsi ini:
result, err := convertToString(-1)
if err != nil {
    if me, ok := err.(*errors.MyError); ok {
        fmt.Println(me.msg)  // 输出:数字必须为非负数
    }
}

Atas ialah kandungan terperinci Bagaimana untuk mengendalikan ralat jenis tersuai di 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