0
在Go中,使用panic()
,您可以使用defer
和recover()
至prevent an app from exiting并继续执行代码。golang - 阻止应用退出
但是,我试图阻止我的应用程序退出时获得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)
}
它是恐慌还是退出?如果其他软件包调用'os.Exit',那么你可以做的事情就不多了(除非使用这个软件包:/)。什么包导致了这个问题? – yazgazan
如果库包调用'os.Exit',*不要使用该包*。对于一个图书馆软件包来说,这是不可思议的不好的做法 – Adrian
这绝对是一个退出,而不是恐慌,我在标准输出中获得'退出状态1'。该软件包是“https:// github.com/Juniper/go-netconf”,但它使用golang.org/x/crypto/ssh来拨打电话。 – Devin