go 自定义错误类型

 基础语法  2022-10-11  admin  486  656

go 自定义错误类型

package main

import (
	"errors"
	"fmt"
)

// MyError 自定义错误类型
type MyError struct {
	Code int
	Msg  string
}

// 实现 Error() 方法
func (h *MyError) Error() string {
	return fmt.Sprintf("status code %d: %s", h.Code, h.Msg)
}

// DoTest 测试方法
func DoTest(t int) error {
	if t == 1 {
		return &MyError{404, "not found"}
	} else if t == 2 {
		return &MyError{403, "Forbidden "}
	} else {
		return errors.New("未知错误")
	}

}

func main() {

	err := DoTest(1)

	if err != nil {
		if _, ok := err.(*MyError); ok && err.(*MyError).Code == 404 {
			fmt.Println(err.(*MyError).Code) // 404
			fmt.Println(err.(*MyError).Msg)  // not found
			fmt.Println(err)                 // status code 404: not found
		} else {
			fmt.Println(err)
		}
	}

}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

go 自定义错误类型 —— code.cent123.com

相关推荐


go 在Windows系统中交叉编译临时环境变量设置

go 编译临时环境变量设置并 交叉编译命令$env:GOOS="linux";$env:GOARCH="amd64";gobuild-ofilenametest.go$env:GOOS="linux";$env:GOARCH="amd64";`gobuild-ofilenametest.go`这两种方式 都是在Powe

phpstorm 设置 外部命令

C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.20.11781.0_x64__8wekyb3d8bbwe\wt.exe-d $ContentRoot$$ProjectFileDir$

点名工具,抽奖软件

点名工具,抽奖软件

酷炫的倒计时客户端

QQ: 425100867捐赠开发者: