网络错的分类(与客户端无关):按 java.net / javax.net.ssl 的异常类型与 JDK 固定的系统文案认。
任何客户端底下抛的都是这批异常,拿来分类都行。
移植自 Keelson jvm/modules/clj-net/src/im/ttalk/net/failure.clj(5c745869)的 classify / socket-kind /
timeout?,判定逻辑未改(timeout? 修了一处原版 bug,见函数体注释)。只给分类,不给可重试判定:clj-net 的 transient? 不把超时算可重试,而 clj-agent
的 canonical error 一直把 HttpTimeoutException 算 :transient——可重试与否仍由调用方的既有口径决定
(designs/http-module.md §1.3)。
网络错的分类(与客户端无关):按 `java.net` / `javax.net.ssl` 的异常类型与 JDK 固定的系统文案认。 任何客户端底下抛的都是这批异常,拿来分类都行。 移植自 Keelson `jvm/modules/clj-net/src/im/ttalk/net/failure.clj`(5c745869)的 `classify` / `socket-kind` / `timeout?`,判定逻辑未改(`timeout?` 修了一处原版 bug,见函数体注释)。**只给分类,不给可重试判定**:clj-net 的 `transient?` 不把超时算可重试,而 clj-agent 的 canonical error 一直把 `HttpTimeoutException` 算 `:transient`——可重试与否仍由调用方的既有口径决定 (designs/http-module.md §1.3)。
(classify e)归到 kinds 之一:解析失败 :name-resolution-error、TLS :secure-connection-error、建连 :connection-error,
其余 :unknown。
归到 `kinds` 之一:解析失败 `:name-resolution-error`、TLS `:secure-connection-error`、建连 `:connection-error`, 其余 `:unknown`。
(socket-kind e)沿原因链找第一个 socket 层的错::permanent(主机名不存在)、:transient(ECONNRESET 那张表,含解析的 TryAgain)、:none。
沿原因链找第一个 socket 层的错:`:permanent`(主机名不存在)、`:transient`(ECONNRESET 那张表,含解析的 TryAgain)、`:none`。
(timeout? e)超时:j.u.c 的 TimeoutException、JDK HttpClient 的请求超时(建连超时不算,它是「还没发出去」)。
超时:j.u.c 的 TimeoutException、JDK HttpClient 的请求超时(建连超时不算,它是「还没发出去」)。
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |