加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang恐慌崩溃预防

发布时间:2020-12-16 19:23:32 所属栏目:大数据 来源:网络整理
导读:在Golang中,没有恢复的恐慌会导致进程崩溃,因此我最终将以下代码片段放在每个函数的开头: defer func() { if err := recover(); err != nil { fmt.Println(err) }}() 只是为了防止我的程序崩溃.现在我想知道,这真的是要走的路吗?因为我认为在任何地方放置
在Golang中,没有恢复的恐慌会导致进程崩溃,因此我最终将以下代码片段放在每个函数的开头:
defer func() {
    if err := recover(); err != nil {
        fmt.Println(err)
    }
}()

只是为了防止我的程序崩溃.现在我想知道,这真的是要走的路吗?因为我认为在任何地方放置相同的代码看起来有点奇怪.

在我看来,Java方式,将异常冒充到调用函数,直到main函数是控制异常/恐慌的更好方法.我理解这是Go的设计,但是像Go那样立即崩溃这个过程有什么好处?

如果你确切知道原因,你应该只从恐慌中恢复过来. Go计划将在两种情况下恐慌:

>程序逻辑错误(例如nil指针取消引用或越界数组或切片访问)
>您的代码调用的代码或代码中的故意恐慌(使用恐慌(…))

在第一种情况下,崩溃是合适的,因为这意味着您的程序已进入错误状态,不应继续执行.在第二种情况下,如果您期望它,您应该只从恐慌中恢复过来.解释这个问题的最好方法就是说它非常罕见,如果你看到它就会知道这种情况.我几乎肯定无论你写的是什么代码,你都不需要从恐慌中恢复过来.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读