golang中自定义实现0当做除数的错误异常处理接口

package main

import "fmt"

type ZeroDivisor struct {  // 定义一个0当做除数的结构体
	divisor int  // 被除数
	divider int  // 除数
}

func (zd *ZeroDivisor) Error() string {  // 实现Error接口
	strFormat := `
		the divider is zero
		divisor: %d
		divider: 0
`
	return fmt.Sprintf(strFormat, zd.divisor)
}

func Divide(divisor, divider int) (result int, errMsg string) {  // 定义int类型书法运算的函数
	if divider == 0 {
		zero := ZeroDivisor{divisor: divisor, divider: divider}
		errMsg = zero.Error()
		return
	} else {
		return divisor / divider, ""
	}
}

func main() {
	// 正常情况
	if result, errMsg := Divide(100,20); errMsg == "" {
		fmt.Println("100 / 20 =", result)
	}
	// 当除数为0时返回的错误信息
	if _, errMsg := Divide(100, 0); errMsg != "" {
		fmt.Println("errMsg是:", errMsg)
	}
}

  

posted @ 2021-09-24 14:05  专职  阅读(110)  评论(0编辑  收藏  举报