カスタム エラー タイプを作成すると、Golang でドメイン固有のエラーを処理できるようになります。エラー タイプを作成した後、エラー アサーションを使用して、エラー タイプがカスタム エラー タイプと一致するかどうかを確認できます。一致するものがあれば、カスタム エラー メッセージにアクセスできます。それ以外の場合は、他のタイプのエラーを処理します。
Golang でカスタム型エラーを処理する方法
Golang でカスタム エラー タイプを作成することは、ドメイン固有のエラーを定義する優れた方法です。これにより、エラーに関する追加情報を含むエラーを作成できます。
カスタム エラー タイプを作成する
カスタム エラー タイプを作成するには、組み込みのerrors.New()
関数を使用できます: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()
メソッド エラーメッセージを返します。これはエラー インターフェイスを実装する唯一のメソッドである必要があります。つまり、文字列タイプのメッセージを返す必要があります。
カスタム エラーの処理
カスタム エラー タイプを作成したら、errortype アサーション
を使用してエラーをチェックできます:
func convertToString(num int) (string, error) { if num < 0 { return "", errors.New("数字必须为非负数") } return strconv.Itoa(num), nil }
result, err := convertToString(-1) if err != nil { if me, ok := err.(*errors.MyError); ok { fmt.Println(me.msg) // 输出:数字必须为非负数 } }
以上がGolang でカスタム型エラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。