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