在Golang中,没有恢复的紧急情况会使进程崩溃,因此我最终将以下代码片段放在每个函数的开头:
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
只是为了防止我的程序崩溃。现在我想知道,这真的是要走的路吗?因为我认为到处都放置相同的代码看起来有些奇怪。
在我看来,以Java的方式将异常冒泡到调用函数之前,直到main函数是控制异常/恐慌的更好方法为止。我了解这是Go的设计,但是像Go一样立即使过程崩溃的好处是什么?
如果您完全知道原因,则应该只从恐慌中恢复过来。在两种情况下,Go程序会惊慌:
panic(...)
代码或代码调用中的故意恐慌(称为使用)在第一种情况下,崩溃是适当的,因为这意味着您的程序已进入错误状态并且不应继续执行。在第二种情况下,仅应在惊慌中恢复。解释这一点的最好方法就是说它非常罕见,如果您看到它,您就会知道。我几乎肯定地说,无论您编写什么代码,都无需从恐慌中恢复过来。
我试图弄清楚和是如何工作的.. 为什么从未打印?
在Golang中,没有恢复的panic将使进程崩溃,因此我最后将以下代码片段放在每个函数的开头: 只是为了防止我的程序崩溃。现在我在想,真的是要走的路吗?因为我觉得到处放同样的代码看起来有点奇怪。 在我看来,这是Java的方式,将异常冒泡到调用函数,直到main函数成为控制异常/恐慌的更好方式。我明白这是Go的设计,但像Go一样立即崩溃进程的好处是什么?
在VS2012中。我只是设置预构建事件如下。 它工作良好的第一次和创建目录。在那之后。当我建造时,它总是显示出错误: 错误1错误MSB3073:命令“md”c:\fit\tecch\programmer365\projects\sdr\debug\strings“:vcend”退出,代码为%1。C:\Program Files(x86)\MSBuild\microsoft.cpp\v4.0\v11
问题内容: 在阅读golang SQL /数据库示例中“事务”中“准备”语句的示例时。其中一行说“危险”,但提供的代码示例没有其他选择。 我想对下面的查询有更清晰的解释,因为Wiki页面-http://go-database-sql.org/prepared.html上没有提供太多信息。 如果您在其中看到提及内容,那是很危险的,但还没有注释掉,请用户删除。 尽管我在上面的代码中没有看到问题,因为“
本文向大家介绍与Facebook有哪些惊人的事实?,包括了与Facebook有哪些惊人的事实?的使用技巧和注意事项,需要的朋友参考一下 截至2018年第一季度,Facebook每月有21.9亿活跃用户。在2012年第三季度,活跃的Facebook用户数量已超过10亿,成为有史以来第一个这样做的社交网络。活动用户是指最近30天内登录Facebook的用户。 2018年全球移动Facebook用户数量
问题内容: 我有以下连接到Mongo的功能。为了进行测试,我关闭了mongod,并希望允许该程序在w / 0 mongo不可用的情况下继续运行。如果无法连接服务器,MGO似乎会引发紧急情况,因此我在下面编写了一个延迟/恢复操作,但是紧急情况仍然导致程序退出。从中恢复的正确方法是什么? 问题答案: 运行您发布的代码的以下版本。尽量不要修改代码,至少不要更改行号的位置。这样,如果您发布堆栈跟踪,则数字