Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的异常处理有什么问题_Java_Android_Exception - Fatal编程技术网

Java中的异常处理有什么问题

Java中的异常处理有什么问题,java,android,exception,Java,Android,Exception,下面是完整的方法。它以字符串形式返回给定URL的HTML代码。 在某些测试之后,我得出结论,try块被跳过了。但我不知道为什么 public static String getHtml(String url) { StringBuilder result = new StringBuilder(); try { HttpClient httpClient = new DefaultHttpClient(); HttpContext

下面是完整的方法。它以字符串形式返回给定URL的HTML代码。 在某些测试之后,我得出结论,try块被跳过了。但我不知道为什么

    public static String getHtml(String url)
 {
     StringBuilder result = new StringBuilder();
     try {
         HttpClient httpClient = new DefaultHttpClient();
         HttpContext localContext = new BasicHttpContext();
         HttpGet httpGet = new HttpGet(url);
         HttpResponse response = httpClient.execute(httpGet, localContext);


         BufferedReader reader = new BufferedReader(
             new InputStreamReader(
               response.getEntity().getContent()
             )
           );

         String line = null;
         char c = '"'; //The Java complains about this type of char So I removed it from the source.
         while ((line = reader.readLine()) != null){
           for(int i = line.length()-1; i >0; --i){
               if (line.charAt(i) != c){
                   result.append(line);
               }
           }
         }
         return result.toString();
     } catch(Exception e){
            result.append("<p><img src=http://desperateshadows.files.wordpress.com/2013/02/img_0721.jpg?w=730 class=size-full alt=Green green not evergreen /></p><p>Little flower at a glance</p>"); //A test Source

         return result.toString();
     }



 }
公共静态字符串getHtml(字符串url)
{
StringBuilder结果=新建StringBuilder();
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpContext localContext=新的BasicHttpContext();
HttpGet HttpGet=新的HttpGet(url);
HttpResponse response=httpClient.execute(httpGet,localContext);
BufferedReader reader=新的BufferedReader(
新的InputStreamReader(
response.getEntity().getContent()
)
);
字符串行=null;
char c='“';//Java抱怨这种类型的字符,所以我从源代码中删除了它。
而((line=reader.readLine())!=null){
对于(int i=line.length()-1;i>0;--i){
如果(第(i)行!=c){
结果。追加(行);
}
}
}
返回result.toString();
}捕获(例外e){
result.append(“

小花一瞥”

”;//测试源 返回result.toString(); } }
您正在从UI线程调用execute()。由于Android 3.0+,因此不允许在UI线程上运行阻止操作。

将Internet访问权限放在Android manifest.xml中

<manifest xlmns:android...> ...
    <application android:label="@string/app_name" >...
    </application>    
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
。。。
...

First:不要“吃掉”异常。调用
e.printStacktrace()在返回结果之前。;
第二:从logcat发布stacktrace。你是否在你的
AndroidManifest.xml中添加了Internet权限?你的日志cat显示了什么?你怎么知道它被跳过了?是的,我有Inernet权限。问题是你没有在catch块中放入足够的调试输出。
Log、 e(标记“getHtml()捕获异常”,e);
以保持您的理智。