golang - 阻止应用程序退出

时间:2017-07-20 18:16:59

标签: go exit

在Go中,使用panic(),您可以使用deferrecover()prevent an app from exiting并继续执行代码。

但是,我在尝试dial tcp 192.168.1.1:830: getsockopt: connection refused时试图阻止我的应用退出。应用程序退出时状态代码为1.从技术上讲,这不是错误,因此我无法捕获错误。我用来进行tcp拨号的外部程序包会导致应用程序在出现这种情况时退出。 (在这种情况下,它是因为端口被阻止了。)

那么如何从另一个包恢复退出并继续我的应用程序?以下面的例子为例:

func makeRequest(target string) {
    // Exits with status code 1, if connection refused 
    res, err := request.NewSession(target)
}

1 个答案:

答案 0 :(得分:1)

不幸的是,不能通过调用os.Exit()来恢复。文档说它会立即退出,甚至不会调用不同的函数。我建议不要使用包,如果它有一个退出,因为这是一个非常糟糕的设计。