当前位置: 首页 > news >正文

go 错误处理 error

普通错误处理

// 包路径
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 ..")
}

相关文章:

  • ncrfp:一种基于深度学习的端到端非编码RNA家族预测新方法
  • docker面试题
  • 自动化办公|xlwings生成图表
  • [Android]APP自启动
  • 探寻 AI 发展新航道:下一个 “S 曲线” 的突破点在哪?
  • 探索关键领域的AI工具:机器学习、深度学习、计算机视觉与自然语言处理
  • 深入理解 Java Servlet:从基础到实战
  • vue3学习1
  • Spring Boot 应用(官网文档解读)
  • 新能源汽车核心元件揭秘:二极管、三极管结构与工作原理解析(2/2)
  • 算法基础(思想)
  • OSPF | 理论 / 实验
  • 技术成长战略是什么?
  • Windows 主机与安卓设备网线直连配置教程
  • spark
  • RNN中远距离时间步梯度消失问题及解决办法
  • git使用-克隆远程项目、分支管理
  • I2C实践开发 ---【STM32-I2C-HDC1080温湿度采集系统】
  • 期权帮|股指期货中的套期保值如何操作?
  • Redis三剑客解决方案
  • 【社论】打破“隐形高墙”,让老年人更好融入社会
  • 国防部:赖清德歪曲二战历史,背叛民族令人不齿
  • 人民日报民生观:转人工客服,怎么这么难?
  • 特朗普访问卡塔尔,两国签署多项合作协议
  • 125%→10%、24%税率暂停90天,对美关税开始调整
  • 气候多米诺:厄尔尼诺与东南亚跨境害虫或威胁中国粮食安全