V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
via
V2EX  ›  Go 编程语言

调查下,有多少人用 panic + defer + recover 的?

  •  
  •   via · 327 天前 via iPhone · 1710 次点击
    这是一个创建于 327 天前的主题,其中的信息可能已经有所发展或是发生改变。
    5 条回复    2024-06-19 16:29:15 +08:00
    securityCoding
        1
    securityCoding  
       326 天前 via Android
    从来不没主动抛过 panic ,预期初始化资源失败直接 fatal 。。
    qloog
        2
    qloog  
       326 天前
    业务里用 panic 用的少,基本都是在应用启动时使用; defer + recover 一般在协程里使用,防止协程泄露或者意外 panic
    lrh3321
        3
    lrh3321  
       326 天前
    只在 main 函数里用 panic ,业务里不用。defer + recover 一般在协程里以防万一。
    RTSmile
        4
    RTSmile  
       325 天前
    几乎所有的错误处理我都会用到 defer + panic ,一来省的写一大堆 if err 判断,二来方便 err 的统一处理和格式化。

    另外 golang 的 encoding/json 标准库中也直接用了 defer recover 来处理错误,这种做法官方也是认可的。
    https://cs.opensource.google/go/go/+/refs/tags/go1.21.6:src/encoding/json/encode.go;drc=04c628935d1487632f903e4e0688fb7a34063752;l=285
    windcode
        5
    windcode  
       183 天前
    从来不主动 panic ,defer + recover 也只是用在协程中防止把主进程干崩
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3425 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:01 · PVG 19:01 · LAX 03:01 · JFK 06:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.