那些情况使用panic
来源:8-2 错误处理概念

qq_白澤_0
2020-05-29
我发现老师总是时不时地不用panic,因为会打断程序。有没有哪些情况使用panic或者说一些常用的做法。
在这里是用于不知道类型的错误处理。除了错误处理我们是不是一般不使用error。
2回答
-
这么说吧,比如,当程序的启动时需要一些必要的配置参数,如果检测到没有配置时(不好意思,一般都会有默认配置参数值的哦),请使用panic,系统参数都没有配置正确,还启动个毛线,再如有数据库连接,连接不成功时直接panic,具体说那些情况使用panic,这个不好说,视具体情况而定,在必要的时候panic,如果想从panic状态恢复到正常,请使用defer ... panic..... recover机制来处理。
012020-05-29 -
ccmouse
2020-05-31
这里理解反了。抱歉给了同学这样的映像。
绝大部分情况下,我们应该使用error。基本上我们很少有需要使用panic的情况。
在这章之前的例子里,我的确时不时的会使用panic。这是因为之前的例子都是小的代码片段,而且也没有正式的引入错误处理的概念。从本章开始到最后的项目,我们基本上很少需要使用panic。
warnerwu同学回答的情况,的确用panic也无妨,包括我的课上也会在这些必须启动的地方使用panic,不过社区也有推荐的写法是log.Fatal/log.Fatalf而不是panic。
在写测试时,当然判断测试样例的结果万不可使用panic,但是测试的初始化错误和上述的程序初始化失败差不多,不过同样社区也有推荐使用t.Fatal/t.Fatalf。
Fatal/Fatalf和panic相比,前者无法用defer来处理,后者可以,但这不是推荐Fata/Fatalf的理由,只是我们不愿意使用panic而已。
总结来说,正常情况下产品代码中没有需要使用panic的场合。
112020-06-01
相似问题