【问题标题】:HttpHostConnectException - How can I catch it right?HttpHostConnectException - 我怎样才能正确地抓住它?
【发布时间】:2013-09-17 19:35:55
【问题描述】:

我有一个HttpHostConnectException... 没关系,因为服务器处于离线状态。所以我想在这种情况下捕获这个异常,服务器将关闭。

但是如果我使用

catch (HttpHostConnectException e){
            e.printStackTrace();
}

什么都没有发生,异常会杀死进程。那么如何捕获“无法访问”的服务器呢?感谢您的时间和帮助;)

【问题讨论】:

    标签: android androidhttpclient


    【解决方案1】:

    调用e.printStackTrace(); 将终止您的应用,因为未处理异常

    e.printStackTrace(); 会将异常打印到 logcat 并显示错误或使您的应用崩溃

    您可以将异常显示为字符串,也可以将静态文本显示为吐司表示服务器无法访问

    catch (HttpHostConnectException e)
    
    {
    
     Toast.makeText(getApplicationContext(), "Server Unreachable ", Toast.LENGTH_LONG).show();
    
    }
    

    如果您想显示导致使用的实际问题/异常是什么

    catch (HttpHostConnectException e)
    
    {
    
     Toast.makeText(getApplicationContext(), "Connection Timeout Reason "+string.ValueOf(e), Toast.LENGTH_LONG).show();
    
    }
    

    通过这样做,您的应用不会自行终止并继续执行代码的下一行

    你也可以这样做

    Log.v(locat,  exception.toString());
    

    【讨论】:

    • “未处理异常”到底是什么意思?我该如何处理?现在它正在工作,因为我在发生 Excption 时取消了 http 请求所在的 AsyncTask。但 printStackTrace() 仍在运行。
    • @Bolic 异常正在打印到堆栈跟踪,然后应用程序将关闭。一旦您的应用程序遇到异常,您将其打印到堆栈并且对异常不执行任何操作
    • 谢谢。看来我在java中并不像我想象的那么强硬。我的意见是,如果我发现异常,那就很好了。但是,如果我抓住了它,我必须处理它。
    • @Bolic 没问题 :) 如果出现异常,只需通过敬酒的方式让用户知道,这样他就知道在服务器重新上线之前不会有任何结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2012-01-12
    • 2011-07-10
    • 2013-11-09
    • 2021-06-21
    • 2019-02-14
    相关资源
    最近更新 更多