私が書いている IRC ボットの場合、UnkownHostException
. 私の最初の考えは、このようなものでした。
(defn open-socket [{:keys [host port] :as connection}]
(try (java.net.Socket. host port)
(catch java.net.UnknownHostException _ (recur connection))))
しかし、catch ブロックから再帰できないため、機能しません。代わりに、次のようなものに落ち着きました。
(let [socket (promise)
_ (while (not (realized? socket))
(try (deliver socket (java.net.Socket. host port))
(catch java.net.UnknownHostException _)))
socket @socket]
...
これは機能しますが、非常に必須です。私が見ることができない、これを行うことができるより機能的な方法はありますか?