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

通信管理局 网站备案天猫网站设计教程

通信管理局 网站备案,天猫网站设计教程,wordpress xmlrpc api,自助建站和网站开发的利弊在Go语言中错误和异常是两个完全不同的概念#xff0c;错误指的是可能出现问题的地方出现了问题#xff0c;而异常指的是不该出现问题的地方出现了问题 从Go语言的机制上讲错误和异常就是error 和panic的区别 错误#xff08;Error#xff09;#xff1a;程序中预期会发生…在Go语言中错误和异常是两个完全不同的概念错误指的是可能出现问题的地方出现了问题而异常指的是不该出现问题的地方出现了问题 从Go语言的机制上讲错误和异常就是error 和panic的区别 错误Error程序中预期会发生的错误预料之中 异常Panic不该出现问题的地方出现了问题预料之外 错误是业务的一部分而异常不是异常是我们不想要的 自定义错误Error  在自定义错误中只需要定义结构体来实现Error()方法即可  package mainimport (fmtgopkg.in/errgo.v2/errors )// MyError 创建一个错误结构体 type MyError struct {msg stringcode interror }// type error interface { Error() string }实现错误接口 func (e *MyError) Error() string {// 返回Error stringreturn fmt.Sprintf(错误信息%s,错误代码%d,c错误值%s\n, e.msg, e.code, e.error)} func (e *MyError) print() bool {return true}func test(i int) (int, error) {if i ! 0 {// 使用自定义的Error进行返回return i, MyError{msg: 输入的值不等于0,code: 500,error: errors.New(3333333),}}// 正常结果return i, nil }func main() {i, err : test(1)if err ! nil {// 使用断言判断err类型my_err, ok : err.(*MyError)if ok {if my_err.print() {// 处理err的子逻辑}}fmt.Println(my_err.msg, my_err.code, my_err.error)}fmt.Println(i) }异常Panic Go语言中没有try...catch语句如果需要处理异常则需要使用panic抛出异常recover来接收处理异常  在使用panic和recover来处理异常的时候必须要结合defer延迟函数来完成 package mainimport (fmt )func testPanic(i int) {// 出去函数的时候处理这里面可能发生的panic// recover func recover() any 返回panic传递的值// panic func panic(v any)defer func() {if err : recover(); err ! nil {fmt.Println(捕获到的panic异常----------, err)}}()if i 0 {panic(这是运行过程中出现异常的------panic)} } func main() {testPanic(1) } 处理Panic后再次出现Panic怎么办 在 Go 语言中defer、recover 是用于异常处理的两个关键字。recover 用于捕获 panic 产生的异常防止程序因为 panic 而崩溃并且可以恢复程序的执行流程。defer 允许你在函数退出时执行代码无论函数是正常结束还是因为调用了 panic 或者遇到了其他异常。 当你在一个使用了 recover 的 defer 语句中再次引发 panicrecover 可以捕获到这个 panic但是这将导致程序进入一个异常的递归状态因为 recover 已经处于处理 panic 的状态。在实际应用中你通常不应该在已经调用了 recover 的 defer 语句中再次引发 panic因为这会使得错误处理变得复杂且难以追踪。  package mainimport (fmt )func mayPanic() {defer func() {if r : recover(); r ! nil {fmt.Println(从恐慌---1中恢复过来:, r)// 错误地再次引发 panicpanic(恐慌---2)}}()panic(恐慌---1) }func main() {defer func() {if r : recover(); r ! nil {fmt.Println(从恐慌中恢复过来:, r)}}()mayPanic()fmt.Println(如果mayPanic没有恢复将不会打印此信息因为出现恐慌1的过程中再次出现恐慌)/*mayPanic 函数中的 defer 语句尝试捕获一个 panic然后错误地再次引发 panic。然而由于 recover 已经在处理一个 panic再次引发 panic 将不会被捕获程序将终止*/ }为了避免这种情况你应该避免在 recover 内部再次引发 panic。如果你需要处理错误或 panic 产生的结果你可以直接返回错误或进行其他类型的处理而不是再次 panic。 正确的错误处理方式可能包括记录日志、清理资源、向调用者返回错误等。在实际应用中你应该仔细设计错误处理逻辑确保程序的稳定性和可维护性。 处理多个 panic 处理多个 panic 的情况通常涉及到多个 defer 语句  在 Go 语言中处理多个 panic 的情况通常涉及到多个 defer 语句。每个 defer 语句都是独立的并且按照它们出现的逆序即最后一个 defer 先执行来执行。这意味着你可以在不同的 defer 块中使用 recover 来捕获并处理 panic。 如果一个函数中有多个地方可能引发 panic并且你希望对每个 panic 进行特定的处理你可以在每个潜在的 panic 点后面放置一个 defer 块并在其中使用 recover。 package mainimport (fmt )func mayPanic1(str string) {defer func() {if r : recover(); r ! nil {fmt.Printf(从恐慌中恢复 %s\n, r)}}()// 模拟可能发生 panic 的代码//出现Panic后是不会继续执行Panic所在的函数继续执行下去的panic(str) } func mayPanic2(str string) {defer func() {if r : recover(); r ! nil {fmt.Printf(从恐慌中恢复 %s\n, r)}}()defer func() {if r : recover(); r ! nil {fmt.Printf((defer recover的顺序是按照它们出现的逆序执行的)从恐慌中恢复 %s\n, r)}}()// 模拟可能发生 panic 的代码//出现Panic后是不会继续执行Panic所在的函数继续执行下去的panic(str) } func mayPanic3(str string) {// 模拟可能发生 panic 的代码//出现Panic后是不会继续执行Panic所在的函数继续执行下去的panic(str) } func main() {defer func() {if r : recover(); r ! nil {fmt.Printf(从恐慌中恢复过来: %v\n, r)}}()mayPanic1(恐慌--A)fmt.Println(由于恐慌--A已恢复将打印此行)mayPanic2(恐慌--B)fmt.Println(由于恐慌--B已恢复将打印此行)mayPanic3(恐慌--C)fmt.Println(出现Panic后是不会继续执行Panic所在的函数继续执行下去的,此行将不会打印) }
http://www.zqtcl.cn/news/512898/

相关文章:

  • 方维o2o 2.9蓝色团购网站程序源码模板做一电影网站怎么赚钱
  • 口碑好网站建设资源新昌网站建设
  • 苏州做网站的公司排名泉州网络推广专员
  • 无为县做互联网网站备案的时候网站建设方案书要吗
  • 修改网站的备案主体dede网站地图不显示文章列表
  • 建立个人网站的成本织梦html5手机网站模板
  • 怎么自己建一个网站吗php网页设计培训
  • 深圳大型论坛网站建设wordpress国内加速
  • 仿站怎么做广告装饰公司名字
  • 黄冈网站推广收费标准wordpress导航页面设置密码
  • 做网站会犯法吗贵州省建设厅城乡建设网站
  • 做网站和做公众号资金盘网站怎么建设
  • 全国最好的网站建设案例推广方法视频
  • 嘉兴网站建设策划方案在海口注册公司需要什么条件
  • 旅游网站国际业务怎样做建设企业官方网站企业登录
  • 北京市昌平网站建设小米网络营销案例分析
  • 怎么利用360域名做网站微信商城怎么弄
  • 中山h5网站建设天津网站建设技术托管
  • 建网站买的是什么商城网站建设合同
  • 购物网站制作样例有没有专门学做婴儿衣服的网站
  • 济南网站建设 找小七买友情链接有用吗
  • 南阳网站建设域名公司泉州关键词排名seo
  • 网站建设在线推广宁夏快速自助制作网站
  • 专业网站建设好不好wordpress编辑文章更新失败
  • 河南郑州网站建设哪家公司好html5 网站正在建设中
  • 免费ppt模板下载医学类江门seo网站推广
  • 智慧软文网站群辉wordpress地址
  • 自己怎么做拼单网站外贸网站 源码
  • 做网站如何防止被黑网页无法访问如何解决360浏览器
  • 专门做设计的网站互联网运营培训班哪个好