为什么我在Java中尝试阻止后无法打印到控制台?

时间:2012-06-08 00:43:56

标签: java android try-catch

我在Android应用程序中有以下代码:

public static HttpResponse dbPost(String handlerUrl, List<NameValuePair> postData) {

    HttpClient httpclient = new DefaultHttpClient();
    String postUrl = constants.postUrl(); 
    HttpPost httppost = new HttpPost(postUrl);
    HttpResponse response = null;
    System.out.print("Catch 0");

    try {
        httppost.setEntity(new UrlEncodedFormEntity(postData));
        response = httpclient.execute(httppost);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    System.out.print("Catch 1");

    return response;

}

我有一个调用此块的按钮。如果我按下按钮,控制台将打印“Catch 0”(但不是“Catch 1”)。如果我再次按下按钮(相同的实例),控制台将打印“Catch1Catch0”。有什么问题?

我对Java有点新鲜,所以请耐心等待。

2 个答案:

答案 0 :(得分:8)

您需要拨打flush,因为您使用的是print

System.out.print("Catch 1");
System.out.flush();

PrintStream的默认行为是仅在写入换行符时刷新。 (write(int)中记录了此行为。)

如果您使用printLn而不是print,则流会自动刷新。没有它,您需要显式刷新输出流。

答案 1 :(得分:2)

您使用的是print而不是println