跳转至

自定义错误提示

网络错误提示

网络请求发生错误一定要提示给用户, 并且是可读语义句

修改默认吐司错误文本或国际化参考以下方式

创建多语言

错误提示文本被定义在strings.xml, 在项目中创建同名name可复写Net定义的文本

国际化语言则需创建多语言values, 例如英语是values-en下创建strings.xml

错误文本
    <!--网络请求异常-->
    <string name="net_connect_error">连接网络失败</string>
    <string name="net_url_error">请求资源地址错误</string>
    <string name="net_host_error">无法找到指定服务器主机</string>
    <string name="net_connect_timeout_error">连接服务器超时,%s</string>
    <string name="net_download_error">下载过程发生错误</string>
    <string name="net_no_cache_error">读取缓存失败</string>
    <string name="net_parse_error">解析数据时发生异常</string>
    <string name="request_failure">请求失败</string>
    <string name="net_request_error">请求参数错误</string>
    <string name="net_server_error">服务响应错误</string>
    <string name="net_null_error">发生空异常</string>
    <string name="net_error">未知网络错误</string>
    <string name="net_other_error">未知错误</string>
    <string name="no_error_message">无错误信息</string>

    <!--对话框-->
    <string name="net_dialog_msg">加载中</string>

创建NetErrorHandler

使用自定义全局错误处理可完全修改, 可不提示错误或附上错误信息

全局错误处理
fun onError(e: Throwable) {
    val message = when (e) {
        is UnknownHostException -> NetConfig.app.getString(R.string.net_host_error)
        is URLParseException -> NetConfig.app.getString(R.string.net_url_error)
        is NetConnectException -> NetConfig.app.getString(R.string.net_connect_error)
        is NetSocketTimeoutException -> NetConfig.app.getString(
            R.string.net_connect_timeout_error,
            e.message
        )
        is DownloadFileException -> NetConfig.app.getString(R.string.net_download_error)
        is ConvertException -> NetConfig.app.getString(R.string.net_parse_error)
        is RequestParamsException -> NetConfig.app.getString(R.string.net_request_error)
        is ServerResponseException -> NetConfig.app.getString(R.string.net_server_error)
        is NullPointerException -> NetConfig.app.getString(R.string.net_null_error)
        is NoCacheException -> NetConfig.app.getString(R.string.net_no_cache_error)
        is ResponseException -> e.message
        is HttpFailureException -> NetConfig.app.getString(R.string.request_failure)
        is NetException -> NetConfig.app.getString(R.string.net_error)
        else -> NetConfig.app.getString(R.string.net_other_error)
    }

    Net.debug(e)
    TipUtils.toast(message)
}