背景
由于后续ws-sdk的使用场景和业务越来越多,方便数据监控以及问题排查,通过sentry接入异常处理机制。 本质上其实就是做两件事儿:
- 将异常改为提示信息。
- 将异常输出到异常日志中查看错误信息。
异常分类
- 逻辑错误:逻辑错误是最难被追踪的错误类型。这些错误是由于程序运行的逻辑上出现错误,从而导致你的脚本程序并不能得到你想要的结果。
- JavaScript自带错误:这是最为常见的错误类型,例如发生JavaScript的语法错误、代码引用错误、类型错误等,JavaScript的引擎都会自动触发这些错误。
- 开发者主动抛出的错误:一般都是开发者为了满足自己的需求所定义出的错误
业务流程
综上,主要是有以下业务过程:
- 鉴权 (成功、失败)
- 组装数据(1. 压缩 2. 加密 3. 组装数据包)
- 发送鉴权消息
- 接收消息
- 解析数据包(1. 解压缩 2. 解密 3.二进制转字符串)
- 回执(见上图2.3,3种情况)
- 发生错误
- 断开连接
- 发生错误(断线重连超出最大限制)而关闭
- 客户端主动关闭连接
抛出异常
通过JS内置对象Error作为上报模型。通过throw语句来抛出自定义的异常。
throw new Error(...);
Error对象
Error(message, options)
可选参数说明如下:
- message:错误信息描述
- options:属性对象
- cause:指定错误的具体原因
异常
业务异常
| 错误名称 | 错误描述 |
|---|---|
| CloseConnection | 断开连接(OUT_RANGE - 超出连接最大次数 INITIATIVE - 客户端主动断开连接 ) |
| AuthFail | 鉴权失败 |
错误异常
自定义异常:
| 错误名称 | 错误描述 |
|---|---|
| EncryptionError | 加密错误 |
| DecryptionError | 解密错误 |
| DeflateError | 压缩错误 |
| InflateError | 解压缩错误 |
| packError | 组装数据包错误 |
| onError | websocket由于连接发生一些错误事件(例如无法发送一些数据)而被关闭时等 |