普通错误处理// 包路径 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) }自定义errorpackage 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 ..) }
go 错误处理 error
发布时间:2026/7/14 14:06:11
普通错误处理// 包路径 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) }自定义errorpackage 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 ..) }