请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

那些情况使用panic

我发现老师总是时不时地不用panic,因为会打断程序。有没有哪些情况使用panic或者说一些常用的做法。
在这里是用于不知道类型的错误处理。除了错误处理我们是不是一般不使用error。

正在回答

2回答

这么说吧,比如,当程序的启动时需要一些必要的配置参数,如果检测到没有配置时(不好意思,一般都会有默认配置参数值的哦),请使用panic,系统参数都没有配置正确,还启动个毛线,再如有数据库连接,连接不成功时直接panic,具体说那些情况使用panic,这个不好说,视具体情况而定,在必要的时候panic,如果想从panic状态恢复到正常,请使用defer ... panic..... recover机制来处理。

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_白澤_0 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-05-29 17:57:01
ccmouse 2020-05-31 21:44:50

这里理解反了。抱歉给了同学这样的映像。

绝大部分情况下,我们应该使用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的场合。


1 回复 有任何疑惑可以回复我~
  • 提问者 qq_白澤_0 #1
    感谢老师解答
    回复 有任何疑惑可以回复我~ 2020-06-01 09:49:42
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号