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

政府网站设计理念友链购买有效果吗

政府网站设计理念,友链购买有效果吗,u钙网logo免费设计在线生成,sap.net网站开发1. Go 语言错误处理基础 Go 语言尽量避免使用异常,推荐使用 返回错误 让调用者处理。Go 语言标准库提供 error 接口:type error interface {Error() string }errors.New("错误信息") 创建错误对象。 package mainimport ("errors"…

1. Go 语言错误处理基础

  • Go 语言尽量避免使用异常,推荐使用 返回错误 让调用者处理。
  • Go 语言标准库提供 error 接口:
    type error interface {Error() string
    }
    
  • errors.New("错误信息") 创建错误对象。
package mainimport ("errors""fmt"
)func hello(name string) error {if len(name) == 0 {return errors.New("NameError: name is empty!!")}fmt.Println("hello !", name)return nil
}func main() {err := hello("")if err != nil {fmt.Println("发生错误:", err)}
}

2. 自定义错误

  • errors.New() 生成错误信息
  • fmt.Errorf() 格式化错误信息
  • 返回错误让调用者决定如何处理
package mainimport ("errors""fmt"
)func divide(a, b int) (int, error) {if b == 0 {return 0, errors.New("除数不能为0")}return a / b, nil
}func main() {result, err := divide(10, 0)if err != nil {fmt.Println("计算错误:", err)} else {fmt.Println("计算结果:", result)}
}

3. panicrecover

  • panic 类似于 Python 的 raise,会让程序崩溃。
  • recover 用于捕获 panic,防止程序崩溃。
  • recover 必须在 defer 语句中调用,否则无效。
package mainimport "fmt"func safeFunction() {defer func() {if r := recover(); r != nil {fmt.Println("捕获到 panic:", r)}}()fmt.Println("执行函数...")panic("故意触发 panic") // 触发 panic
}func main() {safeFunction()fmt.Println("程序继续执行...")
}

4. panic 与数组越界

  • 数组访问越界会引发 panic,所以要提前检查索引范围。
package mainimport ("errors""fmt"
)func getElement(index int) (int, error) {arr := [3]int{10, 20, 30}if index < 0 || index >= len(arr) {return 0, errors.New("索引超出范围")}return arr[index], nil
}func main() {elem, err := getElement(3)if err != nil {fmt.Println("错误:", err)} else {fmt.Println("元素:", elem)}
}

5. defer 关键字

  • defer 语句用于延迟执行,常用于 释放资源、错误恢复等场景
  • 多个 defer先进后出(LIFO) 执行。
package mainimport "fmt"func deferTest() {defer fmt.Println("defer 1")defer fmt.Println("defer 2")fmt.Println("正常执行")
}func main() {deferTest()
}

执行顺序:

正常执行
defer 2
defer 1

6. 处理文件操作错误

  • 文件操作涉及错误处理,os.OpenFile() 返回 error,要检查是否为 nil
package mainimport ("fmt""os"
)func openFile() {file, err := os.OpenFile("test.txt", os.O_RDONLY, 0666)if err != nil {fmt.Println("打开文件失败:", err)return}defer file.Close()fmt.Println("文件打开成功")
}func main() {openFile()
}

7. recover 结合 defer 进行异常恢复

  • recover() 只能在 defer 内部使用,否则无法捕获 panic
  • 可以用 recover 拦截异常,防止整个程序崩溃
package mainimport "fmt"func safeRun() {defer func() {if r := recover(); r != nil {fmt.Println("捕获异常:", r)}}()panic("这是一个 panic 例子")
}func main() {safeRun()fmt.Println("程序没有崩溃,继续执行")
}

8. 手动 panic

  • panic() 直接终止当前函数,沿调用栈向上传播。
  • 通常用于 不可恢复的严重错误(如数组越界)。
package mainimport "fmt"func checkIndex(index int) {if index < 0 {panic("索引不能为负数")}fmt.Println("索引有效:", index)
}func main() {checkIndex(1)checkIndex(-1) // 这里会触发 panic
}

http://www.dtcms.com/wzjs/92312.html

相关文章:

  • 网络直播网站开发软件开发公司
  • vps主机可以做几个网站关键词快速优化排名软件
  • 网站规划作品产品经理培训哪个机构好
  • 如何做网站的关键词排名如何推广普通话
  • 怎么使自己做的网站有音乐近一周热点新闻
  • 网站一般用什么语言做2024年将爆发新瘟疫
  • 网站建设基本技术排名优化关键词公司
  • 焦作建设厅网站今日nba战况
  • 沈阳市做网站电话解析域名网站
  • 做废品回收哪个网站好点市场调研报告ppt
  • 廊坊专业网站制作服务免费做网页的网站
  • wordpress模板资源成都网站优化
  • 三星杭州 两学一做网站百度一下官方网址
  • 无锡做网站优化价格g3云推广靠谱吗
  • 网站后台忘记密码网络销售怎么做
  • 视频变成网站怎么做关注公众号推广2元一个
  • 如何在网站发广告免费建站网站
  • 如何做微信商城网站建设优化推广方案
  • 如何给自己做的网站留后门推广下载app拿佣金
  • 网站设计模板 优帮云平台推广是做什么
  • 专门做选择题的网站手机怎么在百度上发布信息
  • 全国知名网站建设公司seo推广软件品牌
  • 响应式模板网站酒店推广渠道有哪些
  • 强比网站建设福州整站优化
  • 做展示网站步骤黄页88网
  • 新版爱美眉网站源码百度推广服务
  • 宜昌网站制作公司东莞网站推广技巧
  • 赣州专业做网站简述网站推广的方式
  • 商城网站除了域名备案还要中央突然宣布一个大消息
  • 做网站收会员费违法吗百度站长工具如何使用