|
@@ -1,18 +1,25 @@
|
|
|
-Net具备完善的全局错误处理机制
|
|
|
+Net具备完善的全局错误处理机制 <br>
|
|
|
+
|
|
|
+默认情况下不需要去定义错误处理, 因为`NetConfig`默认实现适用于大部分情况的错误处理.
|
|
|
+
|
|
|
+但是如果你想要自定义或者监听错误, 你可以覆盖默认的错误处理. 使用`NetConfig`的以下函数
|
|
|
|
|
|
|场景|处理函数|处理方式|
|
|
|
|-|-|-|
|
|
|
|普通网络请求/自动加载框|`onError`|`toast`提示后端定义的错误消息|
|
|
|
|自动缺省页|`onStateError`|部分错误信息`toast`|
|
|
|
|
|
|
+
|
|
|
缺省页不需要所有的错误信息都吐司(toast)提示, 因为错误页可能已经展示错误信息, 所以这里两者处理的函数区分.
|
|
|
|
|
|
-但是所有的错误信息和错误码都会在LogCat控制台看到, 具体查看[异常追踪](exception-track.md)
|
|
|
+但是所有的错误信息和错误码都会在LogCat控制台看到, 具体查看[异常追踪](exception-track.md).
|
|
|
+
|
|
|
+> 本章末尾有默认实现的源码, 可供参考或者理解: [默认处理](#_2)
|
|
|
|
|
|
|
|
|
## 手动错误处理
|
|
|
|
|
|
-> 假设不需要全局错误处理, 我们可以`catch`作用域来自己处理异常
|
|
|
+假设不需要全局错误处理, 我们可以`catch`作用域来自己处理异常
|
|
|
|
|
|
```kotlin
|
|
|
scopeNetLife {
|
|
@@ -46,14 +53,18 @@ catch里面的`it`属于异常对象, 这里列举可能存在的异常
|
|
|
假设你重写`DefaultConvert`可以改变异常发生的条件, 当然你在转换器或者拦截器中抛出任何异常都会被捕获或者全局处理, 这里你可以自定义你的异常
|
|
|
|
|
|
|
|
|
-## 默认错误处理
|
|
|
+## 覆盖默认错误处理
|
|
|
+
|
|
|
+覆盖默认错误处理有两种方式
|
|
|
+
|
|
|
+### 1) 参考源码完全自定义
|
|
|
|
|
|
-Net默认的错误处理源码
|
|
|
+源码位于: `NetConfig`
|
|
|
|
|
|
-<img src="https://i.imgur.com/t1Ep8tj.png" width="50%"/>
|
|
|
+<img src="https://i.loli.net/2020/10/30/Ggk7WPhMsUBFlYw.png" width="430"/>
|
|
|
|
|
|
|
|
|
-## 错误信息文本
|
|
|
+### 2) 仅覆盖错误信息
|
|
|
|
|
|
默认错误处理的文本被定义在`strings.xml`中, 我们可以在项目中使用同名覆盖或者多语言
|
|
|
```xml
|