isNetworkError()
function isNetworkError(error): boolean;
Defined in: packages/rxdb/src/repository/network-error.ts:85
判断一个错误是否为网络故障(连不上远端),而非远端给出的业务结果。
Parameters
| Parameter | Type | Description |
|---|---|---|
error | unknown | 捕获到的任意值 |
Returns
boolean
仅在能明确识别为网络故障时为 true
Remarks
默认方向是「不是」:认不出的错误一律返回 false,由调用方原样上抛。
反过来会更危险 —— 401、唯一键冲突、字段校验失败被当成离线,调用方拿到的是陈旧缓存
而不是失败原因,问题被推迟到不知道多久以后才暴露。
判据优先级:
- NetworkOfflineError —— 已经分类过了
- 带数字
status→ 不是网络错误。拿到了 HTTP 状态码就说明连接是通的, 502 / 503 也是远端给的回答,不是网线断了 - Node errno(NETWORK_ERRNO)
DOMException.name(NETWORK_ERROR_NAMES)fetch()失败特有的TypeError消息
Example
try {
await remote.fetchMetadata('Todo', where);
} catch (error) {
if (!isNetworkError(error)) throw error; // 业务错误原样上抛
return readLocalCache();
}