go_error

go的错误表示方法

转载自链接

error简单表示方法

package errors

// New returns an error that formats as the given text.
func New(text string) error {
	return &errorString{text}
}

// errorString is a trivial implementation of error.
type errorString struct {
	s string
}

func (e *errorString) Error() string {
	return e.s
}

error的结构体表示方法

允许携带更多信息

package errors

import "fmt"

type AreaError struct {
	Err    string
	Radius float64
}

func (e *AreaError) Error() string{
	return fmt.Sprintf("radius %0.2f: %s",e.Radius,e.Err)
}

main函数

package main

import (
	"error/error"
	"fmt"
	"math"
)

func circleArea0(radius float64) (float64, error) {
	if radius < 0 {
		return 0, errors.New("Area calculation failed, radius is less than zero")
	}
	return math.Pi * radius * radius, nil
}

func circleArea1(radius float64) (float64, error) {
	if radius < 0 {
		return 0, &errors.AreaError{Err: "radius is negative", Radius: radius}
	}
	return math.Pi * radius * radius, nil
}
func main() {
	radius := -20.0
	//area, err := circleArea0(radius)
	//if err != nil {
	//	fmt.Println(err)
	//	return
	//}

	//基于错误,反馈更多信息radius
	area, err := circleArea1(radius)
	if err != nil{
		if err,ok := err.(*errors.AreaError);ok{
			fmt.Printf("Radius %0.2f is less than zero\n", err.Radius)
			return
		}
		fmt.Println(err)
		return
	}
	fmt.Printf("Area of circle %0.2f", area)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值