golang - 防止应用程序退出
golang - prevent app from Exiting
在 Go 中,使用 panic()
您可以使用 defer
和 recover()
到 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)
}
很遗憾,您无法从对 os.Exit() 的调用中恢复。文档说它会立即退出,甚至不会调用不同的函数。我建议不要使用有出口的包,因为这是一个非常糟糕的设计。
在 Go 中,使用 panic()
您可以使用 defer
和 recover()
到 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)
}
很遗憾,您无法从对 os.Exit() 的调用中恢复。文档说它会立即退出,甚至不会调用不同的函数。我建议不要使用有出口的包,因为这是一个非常糟糕的设计。