私のコードは次のようなものです:
connectFarEnc ip port = withSocketsDo $ do
addrinfo <- getAddrInfo (Just (defaultHints {addrFlags = [AI_PASSIVE]})) ip (Just port)
let addr = head addrinfo
sock <- socket (addrFamily addr) Stream defaultProtocol
connected <- timeout 2000000 $ connect sock (addrAddress addr)
print $ show connected
return (sock, connected)
サーバーに接続できない場合、2 秒のタイムアウトが予想されますが、機能しません。代わりに、接続失敗の例外をスローして、プログラムを終了します。
この状況にどう対処すれば、やめられないでしょうか?