zoukankan      html  css  js  c++  java
  • GO语言异常处理03---自定义异常

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    /*
    type error interface {
    	Error() string
    }
    */
    
    func GetCircleAreaIII(radius float64) (area float64, err error) {
    	//假设有效半径为[10,50]
    	if radius > 10||radius < 50{
    		//return 0,errors.New("半径不能为负数")
    		return 0,NewInvalidRadiusError(radius,10,50)
    	}
    	return 3.14*radius*radius,nil
    }
    
    /*封装,将异常的信息变得丰富,且高度自定义*/
    type InvalidRadiusError struct {
    	//非法半径
    	InvalidRadius float64
    
    	//合法的最小半径
    	MinValidRadius float64
    	//合法的最大半径
    	MaxValidRadius float64
    
    	//异常发生时间
    	errTime time.Time
    }
    
    /*异常被打印的方式*/
    func (ire InvalidRadiusError)String() string {
    	return fmt.Sprintf("InvalidRadiusError{%.2f是非法半径,合法半径的范围是[%.2f,%.2f],错误发生时间是%v}",ire.InvalidRadius,ire.MinValidRadius,ire.MaxValidRadius,ire.errTime)
    }
    
    /*实现error接口*/
    func (ire *InvalidRadiusError)Error() string {
    	return ire.String()
    }
    
    /*创建自定义异常工厂方法*/
    func NewInvalidRadiusError(invalidRadius,minRadius,maxRadius float64) *InvalidRadiusError {
    	ire := new(InvalidRadiusError)
    	ire.InvalidRadius = invalidRadius
    	ire.MaxValidRadius = maxRadius
    	ire.MinValidRadius = minRadius
    	ire.errTime = time.Now()
    	return ire
    }
    
    func main() {
    	//err := errors.New("异常信息")
    	//fmt.Println(err)
    
    	area, err := GetCircleAreaIII(-5)
    	fmt.Println(area,err)
    }
    

      输出

    0 InvalidRadiusError{-5.00是非法半径,合法半径的范围是[10.00,50.00],错误发生时间是2020-01-07 23:15:21.2348002 +0800 CST m=+0.007000001}
    

      

  • 相关阅读:
    带你玩转Visual Studio——带你高效开发
    删除ue4中c++类
    ue4 2游戏构架相关
    UE4 代码总结
    unreal4特性介绍
    ue4 1官网编程指南总结
    UE4 中的 C++ 编程介绍
    ue4 代码入门
    Unity 5着色器系统代码介绍(下)
    Unity 5着色器系统代码介绍(上)
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/12164282.html
Copyright © 2011-2022 走看看