改进异常处理

时间:2016-03-04 13:05:24

标签: java android android-studio retrofit okhttp

我需要在调用onFailure方法时使用Retrofit处理不同的异常,并依赖于异常显示一些错误消息。

现在,我只显示带有消息Error的祝酒词。我认为这还不够。

通知用户有关REST调用中的问题的适当方法是什么?

2 个答案:

答案 0 :(得分:0)

有很多选项可以通知用户应用程序功能中发生的错误。当谈到网络呼叫时,一种明智的方法是根据响应的http代码(400,404,403或200)提示用户提供适当的消息,并使她能够重试。

SnackBar 是Android中提供的Material设计组件之一,使开发人员可以在屏幕的任何部分(顶部,底部,......)显示消息并集成一些函数进入它,以便用户可以“重试”或“撤消”她所做的事情。

enter image description here

实施起来非常简单明了:

Snackbar snackbar = Snackbar
    .make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_LONG)
    .setAction("RETRY", new View.OnClickListener() {
        @Override
        public void onClick(View view)
        {
           //your retry functionality
        }
    });

我建议您使用snackbar通过自定义功能向用户显示消息。

要根据您正在使用的API的http响应显示正确的消息,您应该知道meaning of each Http status code

有关实施和自定义Snackbars的优秀教程,您可以在Android SnackBar Example by AndroidHive.上学习本教程

答案 1 :(得分:0)

在我看来,你不应该告诉用户任何技术问题,他们可能不会理解它(例如“ERROR 5653”)。因此,处理失败的方式取决于请求的上下文。如果请求杀死了应用程序的整个流程,您可能希望执行更多操作,那么只显示一个Toast,但如果不是,我通常会显示Toast / Snackbar,其中包含一般错误消息: “出了点问题。”