【问题标题】:how to use try catch instead force close?如何使用 try catch 而不是强制关闭?
【发布时间】:2015-05-11 21:07:45
【问题描述】:

我在 android 和 java 中有这段代码。当用户的 Internet 连接出现问题或网站无法访问时,我想向用户显示一个对话框。我尝试将我的代码放入 try-catch 块中,但是当 Internet 连接出现问题时,我的应用程序已关闭。我想向用户显示一条消息,而不是关闭应用程序。

 HttpPost ht = new HttpPost("http://yahoo.com");
        HttpClient hc = new DefaultHttpClient();
        HttpResponse hr = null;

        try {
            hr = hc.execute(ht);

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        String htmlTemp = "";
        try {

            HttpEntity he = hr.getEntity();

            htmlTemp = new String(EntityUtils.toString(he));

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

【问题讨论】:

  • 你有错误的堆栈跟踪吗?想知道这是否是权限问题?
  • 您可能在第一个 try/catch 块中遇到了未处理的异常,您只捕获了 ClientProtocolException 和 IOException。
  • 您只发现了两种非常具体的错误。从一般的错误处理程序开始,捕获异常分析如何处理它们,然后实现特定的错误处理程序。

标签: java android try-catch


【解决方案1】:

您可以尝试将UnknownHostException 添加到您的捕获中,或者您可以在调用请求之前使用此方法:

  public static boolean hasConnection() {
    ConnectivityManager cm = (ConnectivityManager) MbridgeApp.getContext().getSystemService(
        Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (wifiNetwork != null && wifiNetwork.isConnected()) {
      return true;
    }

    NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (mobileNetwork != null && mobileNetwork.isConnected()) {
      return true;
    }

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
      return true;
    }

    return false;
  }

【讨论】:

    【解决方案2】:

    您是否在清单文件中声明了此使用权限?

    <uses-permission android:name="android.permission.INTERNET" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      相关资源
      最近更新 更多