1
0
drake 4 жил өмнө
parent
commit
a9a796018f

+ 4 - 0
docs/auto-error-handle.md → docs/global-error-handle.md

@@ -31,6 +31,10 @@ scopeNetLife {
 
 catch里面的`it`属于异常对象, 这里列举可能存在的异常
 
+`scope/scopeLife`不会触发任何全局错误`onError/onStateError`, 请使用单例错误处理方式`catch`, 因为`scope`用于处理异步任务,不应当用于网络请求
+
+
+
 | 异常 | 描述 |
 |-|-|
 | NetworkError | 无网络 |

+ 14 - 3
docs/scope.md

@@ -6,7 +6,7 @@ Net的网络请求本身支持在官方的自带的作用域内使用, 但是考
 
 ## 异步任务的作用域
 
-快速创建可以捕捉异常的协程作用域
+快速创建可以捕捉异常的协程作用域, 以下作用域不会触发全局错误处理
 
 |函数|描述|
 |-|-|
@@ -18,6 +18,8 @@ Net的网络请求本身支持在官方的自带的作用域内使用, 但是考
 
 网络请求的作用域可以根据生命周期自动取消网络请求, 发生错误也会自动弹出吐司(可以自定义或者取消), 并且具备一些场景的特殊功能(例如加载对话框, 缺省页, 下拉刷新等)
 
+以下作用域会触发全局错误处理
+
 | 函数 | 描述 |
 |-|-|
 |`scopeNet`|创建自动处理网络错误的作用域|
@@ -36,12 +38,21 @@ Net的网络请求本身支持在官方的自带的作用域内使用, 但是考
 scope {
     // scope系列函数的这个大括号里面就是作用域
 }.catch {
-    // 协程内部发生错误回调
+    // 协程内部发生错误回调, it为异常
+    handleError(it) // 该函数会将错误再次传递给全局错误回调处理
 }.finally {
-    // 协程内全部执行完成回调(包括子协程)
+    // 协程内全部执行完成回调(包括子协程), it为异常(如果正常完成则为null)
 }
 ```
 
+以下函数幕后字段`it`为异常对象
+
+| 函数 | 描述 |
+|-|-|
+| catch | 作用域被`catch`则不会被传递到全局异常处理回调中: [全局处理异常](global-error-handle.md), 除非使用`handleError`再次传递给全局 |
+| finally | 同样可以获取到异常对象, 且不影响全局异常回调处理 |
+
+
 > 如果想了解详细的协程使用方式, 可以查看我的一篇文章: [最全面的Kotlin协程: Coroutine/Channel/Flow 以及实际应用](https://juejin.im/post/6844904037586829320)
 
 

+ 3 - 3
mkdocs.yml

@@ -39,22 +39,22 @@ nav:
   - 并发: parallel.md
   - 作用域: scope.md
   - 全局配置: config.md
+  - 异常追踪: exception-track.md
+  - 全局错误处理: global-error-handle.md
   - 转换器: convert.md
-  - 解析JSON数组: parse-list.md
   - 拦截器: interceptor.md
-  - 异常追踪: exception-track.md
   - 自动化:
       - 自动加载框: auto-dialog.md
       - 自动缺省页: auto-state.md
       - 自动下拉刷新: auto-refresh.md
       - 自动分页加载: auto-page.md
-      - 自动错误处理: auto-error-handle.md
   - 切换调度器: switch-dispatcher.md
   - 标签: tag.md
   - 上传文件: upload-file.md
   - 下载文件: download-file.md
   - 下载图片: download-image.md
   - 读取缓存: read-cache.md
+  - 解析JSON数组: parse-list.md
   - 嵌套作用域: nested-scope.md
   - 最快请求结果: fastest.md
   - 唯一请求: unique.md