panic()
でdefer
とrecover()
〜prevent an app from exitingを使用してコードを実行し続けることができます。golang - 終了からアプリケーションを防ぐ
しかし、dial tcp 192.168.1.1:830: getsockopt: connection refused
を取得すると、アプリが終了しないようにしようとしています。アプリケーションはステータスコード1で終了します。これは技術的にエラーではないため、エラーをキャッチできません。この状態が発生すると、私はtcpダイヤルを作るために使用している外部パッケージによって、アプリケーションが終了します。 (この場合は、ポートがブロックされているためです)
他のパッケージからExitを回復してアプリケーションを続行するにはどうすればよいですか?以下の例を参考にしてください:
func makeRequest(target string) {
// Exits with status code 1, if connection refused
res, err := request.NewSession(target)
}
パニックになるか、終了しますか?他のパッケージが 'os.Exit'を呼び出した場合は、あまり多くのことができません(/このパッケージを使用しないでください)。問題を引き起こしているのはどのパッケージですか? – yazgazan
ライブラリパッケージが 'os.Exit'を呼び出した場合、*はそのパッケージを使用しません。それはライブラリパッケージのためには許されない悪い習慣です。 – Adrian
これは間違いなくパニックではなく出口ですが、私はstdoutで 'exit status 1 'を得ます。パッケージは 'https:// github.com/Juniper/go-netconf'ですが、' golang.org/x/crypto/ssh'を使って呼び出します。 – Devin