go 错误处理 error
2026/7/14 14:05:56 网站建设 项目流程

普通错误处理

// 包路径 package main import ( "errors" "fmt" ) func sqrt(f1, f2 float64) (float64, error) { if f2 < 0 { return 0, errors.New("error: f2 < 0") } return f1 / f2, nil } func sqrt1(f1, f2 float64) { if re, err := sqrt(f1, f2); err == nil { fmt.Println("计算没有错误,结果为:", re) } else { fmt.Println("计算发生错误,错误信息为:", err) } } // main方法 func main() { // 错误机制是利用多个返回值机制实现 // 计算没有错误,结果为: 1 sqrt1(1.1, 1.1) // 计算发生错误,错误信息为: error: f2 < 0 sqrt1(1.1, -1.1) }

自定义error

package main import ( "log" ) // 自定义异常类型 type CustomerDefinitionError struct { message string } // 实现Error方法,用来标记是自定义错误 // err CustomerDefinitionError 只读err // err *CustomerDefinitionError 可以修改err func (err *CustomerDefinitionError) Error() string { return err.message } // 注意抛出方法 func throwUDError() error { return &CustomerDefinitionError{"错误信息!!!"} } func main() { log.Println("main ...") err := throwUDError() log.Println(err.Error()) // 类型的判断 if pathErr, ok := err.(*CustomerDefinitionError); ok { log.Println("This is user definition error", pathErr) } switch vt := err.(type) { case *CustomerDefinitionError: log.Println("This is user definition error", vt) default: log.Println("other type error") } log.Println("success ..") }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询