refactor(net): 完善全局异常处理
This commit is contained in:
@ -1,7 +1,6 @@
|
|||||||
package com.quyunshuo.androidbaseframemvvm.common.helper
|
package com.quyunshuo.androidbaseframemvvm.common.helper
|
||||||
|
|
||||||
import com.quyunshuo.androidbaseframemvvm.base.utils.toast
|
import com.quyunshuo.androidbaseframemvvm.base.utils.toast
|
||||||
import com.quyunshuo.androidbaseframemvvm.common.helper.ResponseExceptionEnum as ExceptionType
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 响应code异常统一处理
|
* 响应code异常统一处理
|
||||||
@ -26,10 +25,10 @@ suspend fun responseCodeExceptionHandler(
|
|||||||
) {
|
) {
|
||||||
// 进行异常的处理
|
// 进行异常的处理
|
||||||
when (code) {
|
when (code) {
|
||||||
ExceptionType.INTERNAL_SERVER_ERROR.getCode() -> {
|
ResponseCodeEnum.ERROR.getCode() -> {
|
||||||
toast(ExceptionType.INTERNAL_SERVER_ERROR.getMessage())
|
toast(ResponseCodeEnum.ERROR.getMessage())
|
||||||
throw ResponseEmptyException()
|
throw ResponseEmptyException()
|
||||||
}
|
}
|
||||||
ExceptionType.SUCCESS.getCode() -> successBlock.invoke()
|
ResponseCodeEnum.SUCCESS.getCode() -> successBlock.invoke()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,37 +1,38 @@
|
|||||||
package com.quyunshuo.androidbaseframemvvm.common.helper
|
package com.quyunshuo.androidbaseframemvvm.common.helper
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求响应异常枚举的抽象
|
* 请求响应code枚举抽象
|
||||||
*
|
*
|
||||||
* @author Qu Yunshuo
|
* @author Qu Yunshuo
|
||||||
* @since 2021/7/9 2:56 下午
|
* @since 2021/7/9 2:56 下午
|
||||||
*/
|
*/
|
||||||
interface ResponseExceptionEnumCode {
|
interface IResponseCode {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取该异常枚举的code码
|
* 获取该枚举的code码
|
||||||
* @return Int
|
* @return Int
|
||||||
*/
|
*/
|
||||||
fun getCode(): Int
|
fun getCode(): Int
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取该异常枚举的描述
|
* 获取该枚举的描述
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
fun getMessage(): String
|
fun getMessage(): String
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求响应异常的类型
|
* 请求响应code的枚举
|
||||||
*
|
*
|
||||||
* @author Qu Yunshuo
|
* @author Qu Yunshuo
|
||||||
* @since 2021/7/9 2:55 下午
|
* @since 2021/7/9 2:55 下午
|
||||||
*/
|
*/
|
||||||
enum class ResponseExceptionEnum : ResponseExceptionEnumCode {
|
enum class ResponseCodeEnum : IResponseCode {
|
||||||
|
|
||||||
INTERNAL_SERVER_ERROR {
|
// 通用异常
|
||||||
override fun getCode() = 500
|
ERROR {
|
||||||
override fun getMessage() = "服务器内部错误"
|
override fun getCode() = 100
|
||||||
|
override fun getMessage() = "处理失败"
|
||||||
},
|
},
|
||||||
|
|
||||||
// 成功
|
// 成功
|
||||||
@ -1,18 +1,23 @@
|
|||||||
package com.quyunshuo.androidbaseframemvvm.common.helper
|
package com.quyunshuo.androidbaseframemvvm.common.helper
|
||||||
|
|
||||||
import com.quyunshuo.androidbaseframemvvm.common.helper.ResponseExceptionEnum as ExceptionType
|
/**
|
||||||
|
* 自定义响应异常的抽象类型
|
||||||
|
*
|
||||||
|
* @author Qu Yunshuo
|
||||||
|
* @since 2021/8/27 9:50 上午
|
||||||
|
*/
|
||||||
|
interface IResponseException
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求响应异常,主要为各种code码专门定义的异常
|
* 请求响应异常,主要为各种code码专门定义的异常
|
||||||
*
|
*
|
||||||
* @param type ResponseExceptionEnum 异常类型枚举,用于标记该异常的类型
|
* @param type IResponseCode 异常类型枚举,用于标记该异常的类型
|
||||||
* @param msg String 异常信息
|
* @param msg String 异常信息
|
||||||
*
|
*
|
||||||
* @author Qu Yunshuo
|
* @author Qu Yunshuo
|
||||||
* @since 2021/7/9 2:57 下午
|
* @since 2021/7/9 2:57 下午
|
||||||
*/
|
*/
|
||||||
class ResponseException(val type: ExceptionType, val msg: String) : Exception()
|
class ResponseException(val type: IResponseCode, val msg: String) : Exception(), IResponseException
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 空异常,表示该异常已经被处理过了,不需要再做额外处理了
|
* 空异常,表示该异常已经被处理过了,不需要再做额外处理了
|
||||||
@ -20,4 +25,4 @@ class ResponseException(val type: ExceptionType, val msg: String) : Exception()
|
|||||||
* @author Qu Yunshuo
|
* @author Qu Yunshuo
|
||||||
* @since 2021/7/9 3:11 下午
|
* @since 2021/7/9 3:11 下午
|
||||||
*/
|
*/
|
||||||
class ResponseEmptyException : Exception()
|
class ResponseEmptyException : Exception(), IResponseException
|
||||||
Reference in New Issue
Block a user