瀏覽代碼

更新文档

drake 3 年之前
父節點
當前提交
e92c82c4fa
共有 2 個文件被更改,包括 37 次插入18 次删除
  1. 36 17
      docs/error-handle.md
  2. 1 1
      docs/scope.md

+ 36 - 17
docs/error-handle.md

@@ -1,15 +1,28 @@
-## 作用域异常中断
-一个作用域内常常有多个请求发生. 默认情况下一个请求发生错误就会取消所在作用域, 然后间接取消所有子作用域 (即取消所在作用域的所有请求).
+## 默认异常处理
+Net具备完善的异常处理机制, 默认情况发生错误会执行以下操作
 
+1. `Logcat`中显示详细的异常堆栈信息
+2. `Toast`吐司显示异常信息(默认使用内置的异常文本信息)
+
+要改变以上异常处理流程就需要自定义异常处理器
+
+捕获异常分为两种
+
+1. 作用域内部异常捕获
+2. 捕获整个作用域内部所有异常
+
+## 作用域内部异常捕获
+一个作用域内常常有多个请求发生. 默认情况下一个请求发生错误就会取消当前作用域内部所有协程
+
+例如
 ```kotlin
 scopeNetLife {
     Get<String>("api").await() // 失败
     Get<String>("api2").await() // 上面失败, 此处也不会执行
 }
 ```
-虽然示例代码是同步请求, 但是实际上并发请求也是如此.
 
-除非你catch住错误
+捕获第一个协程避免终止后续执行
 ```kotlin
 scopeNetLife {
     try {
@@ -19,25 +32,31 @@ scopeNetLife {
     Get<String>("api2").await() // 上面失败, 此处继续执行
 }
 ```
-或者你创建不同的作用域分别请求
+当然如果你创建不同的作用域分别请求那是互不影响的
+```kotlin
+scopeNetLife {
+    Get<String>("api").await() // 失败
+}
+scopeNetLife {
+    Get<String>("api2").await() // 上面失败, 此处完全不受影响
+}
+```
 
-## 默认错误处理
-Net具备完善的错误处理机制, 默认情况发生错误会执行
+## 捕获整个作用域
 
-1. Logcat 显示详细的异常堆栈信息
-2. Toast 显示异常信息(内置的异常文本信息)
+捕获整个作用域分为两类
 
-要改变以上错误处理流程就需要自定义错误处理器
+1. 单例处理异常(针对每个作用域)
+2. 全局处理异常(针对所有作用域, [个别除外](#scope))
 
-## 单例处理异常
+### 单例处理异常
 ```kotlin
 scope {
     val data = Get<String>("http://www.thisiserror.com/").await()
 }.catch {
     // 协程内部发生错误回调, it为异常
-    handleError(it) // 该函数会将错误再次传递给全局错误回调处理
 }.finally {
-    // 协程内全部执行完成回调(包括子协程), it为异常
+    // 协程内协程全部执行完成, it为异常(如果是正常结束则it为null)
 }
 ```
 
@@ -45,14 +64,14 @@ scope {
 
 | 函数 | 描述 |
 |-|-|
-| catch | 作用域被`catch`则不会被传递到全局异常处理回调中: [全局处理异常](error-handle.md), 除非使用`handleError`再次传递给全局 |
+| catch | 作用域被`catch`则不会被传递到全局异常处理回调中: [全局处理异常](exception-handle.md), 除非使用`handleError`再次传递给全局 |
 | finally | 同样可以获取到异常对象, 且不影响全局异常回调处理 |
 
-## 全局处理异常
+### 全局处理异常
 
 Net默认就会处理异常错误避免崩溃. 但是如果你想要自定义或者监听全局错误, 你可以覆盖默认的错误处理.  在`initNet`或者`NetConfig.errorHandler`函数里面自定义全局错误处理
 
-默认情况下不需要去定义错误处理, 因为`NetErrorHandler`默认实现适用于大部分情况的错误处理.
+默认情况下不需要去定义异常处理, 因为`NetErrorHandler`默认实现适用于大部分情况的异常处理.
 
 |场景|处理函数|处理方式|
 |-|-|-|
@@ -110,7 +129,7 @@ NetConfig.init("http://localhost:80/") {
 转换器中发生的所有异常除非是NetException的子类否则都将被ConvertException包裹(即捕获的是ConvertException).
 
 
-## 覆盖默认错误处理
+## 覆盖默认异常处理
 
 覆盖默认错误处理有两种方式
 

+ 1 - 1
docs/scope.md

@@ -4,7 +4,7 @@
 
 ## 异步任务的作用域
 
-创建可以捕捉异常的协程作用域, 但是不会触发`NetErrorHandler`(默认异常处理者). 该作用域于一般用于普通的异步任务
+创建可以捕捉异常的协程作用域, 但是不会触发`NetErrorHandler`(全局错误处理者). 该作用域于一般用于普通的异步任务
 
 |函数|描述|
 |-|-|