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

Go语言入门(21)-错误处理

Go语言允许函数和方法同时返回多个值。按照惯例,函数在返回错误时,最后边的返回值应用来表示错误。调用函数后,应立即检查是否发生错误。

如果没有错误发生,那么返回的错误值为nil。

package mainimport ("fmt""os"
)func main() {//"." 是一个标准的表示法,代表当前目录,即程序运行时所在的目录.//当你传递 "." 给 ioutil.ReadDir() 时,函数会读取当前工作目录中的所有文件和子目录。files, err := ioutil.ReadDir("../")if err != nil {fmt.Println(err)os.Exit(1)}for _, file := range files {fmt.Println(file.Name())}
}

那如何优雅地进行错误处理/减少错误处理代码呢?有一种策略是:将程序中不会出错地部分和包含潜在错误隐患地部分隔离开来。对于不得不返回错误地代码,应尽力简化相应地错误处理代码。

再写入文件时,可能会出错,例如:路径不正确、权限不够、磁盘空间不够等。。。

文件写入完毕后,必须被关闭,确保文件被刷到磁盘上,避免资源的泄露。下面看一个例子

package mainimport ("fmt""os"
)// 文件写入👇
func proverbs(name string) error {f, err := os.Create(name)if err != nil {return err}defer f.Close() //defer关键字,可确保所有被defer的动作可以在函数返回前执行。_, err = fmt.Fprintln(f, "Errors are values.")if err != nil {//有defer,就可以注释掉下方的语句//f.Close() //文件写入完毕后,必须被关闭,确保文件被刷到磁盘上,避免资源泄露。return err}_, err = fmt.Fprintln(f, "Don't just check errors,handle them gracefully.")f.Close() //有defer,就可以注释该语句return err
}//文件写入👆func main() {// 文件写入👇err := proverbs("proverbs23.txt")if err != nil {fmt.Println(err)os.Exit(1)}//文件写入👆}

defer关键字:

上述例程中用到了defer(),它是Go语言中关键字的一种,可以确保所有deferred的动作可以在函数返回前执行。

http://www.dtcms.com/a/450153.html

相关文章:

  • 实验二:链表
  • 在线免费开网站企业网站管理系统设计报告
  • 什么网站做ppt模板wordpress网页标签图标
  • 专栏丨华为HN8145XR光猫获取超级管理员密码
  • 小型企业网站开发公司wordpress 中文开发
  • Redis rdb持久化
  • AgentWorkflow 实战:从单 Agent 到多 Agent 协作的完整方案
  • 数据懒加载和虚拟列表
  • 江苏省建设注册中心网站首页在线制作简历网站
  • Java “线程池(2)”面试清单(含超通俗生活案例与深度理解)
  • Linux内核kallsyms符号压缩与解压机制
  • 米思米网站订单取消怎么做基金会网站模板
  • 公司网站源码做智能家居网站需要的参考文献
  • 11. Pandas 数据分类与区间分组(cut 与 qcut)
  • 找家里做的工作到什么网站淄博五厘网络技术有限公司
  • 国外哪些网站做产品推广比较好四川建设人员信息查询
  • 第二章:软件需求
  • AI Agent赋能产品经理:从需求分析到用户增长的全流程实践
  • 网站服务公司案例广州网站建设优化公司
  • AI学习日记——神经网络参数的更新
  • Java进阶教程,全面剖析Java多线程编程,多线程和堆内存栈内存的关系,笔记20
  • 建设春风摩托车官方网站百度站长论坛
  • 长春企业网站建设公司建设银行广州招聘网站
  • 网站 开发 周期定制app开发软件
  • 怎么做网站 ppt货代网站制作
  • 2025-10-06 Python不基础12——class原理
  • 龙泉驿建设局网站谷歌seo是什么职业
  • 从东方仙盟筑基期看 JavaScript 动态生成图片技术-东方仙盟
  • 怎么做电脑网站后台谷歌seo推广服务
  • 【笔记】2.1.1.1 电化学定义与组件特征