在代号1中捕获未知的主机异常

时间:2012-07-22 06:42:22

标签: codenameone

我正在使用codename one

构建应用

所以问题是,我需要使用应用程序访问URL。 URL会带回一些我在屏幕上显示的结果。

所以我用这些线来做到这一点:

ConnectionRequest c = new ConnectionRequest() {

                protected void readResponse(InputStream input) throws IOException {


                    ByteArrayOutputStream bs = new ByteArrayOutputStream();

                    int ch;

                    while ((ch = input.read()) != -1) {

                        bs.write(ch);
                    }
                    serverOutput = new String(bs.toByteArray());
                    bs.close();
                }
            };
            c.setUrl("My URL HERE");
            c.setPost(false);


            NetworkManager.getInstance().addToQueueAndWait(c);

所以,现在,如果gprs处于活动状态,则此代码可以正常工作。

但是,如果GPRS处于非活动状态,则会抛出未知主机异常

为了捕获这个错误,我尝试使用这样的try catch块:

try{
 NetworkManager.getInstance().addToQueueAndWait(c);
}
catch(Exception e)
{
Sys.out.pln(e.troString());
}

但是,我仍然在应用程序中以对话框的形式出现错误。我如何捕获此错误并自行处理?

更新1:

我不确定这是一个特定问题的代号,还是与java有关的......所以请帮我解决这个问题。

2 个答案:

答案 0 :(得分:7)

尝试此操作来处理所有连接的一般错误:

NetworkManager.getInstance().addErrorListener(new ActionListener() {

     public void actionPerformed(ActionEvent evt) {
         //handle your error here consume the event
         evt.consume();
     }
});

或覆盖:

protected void handleErrorResponseCode(int code, String message) {
}

protected void handleException(Exception err) {
}

在您的连接请求代码中,只为一个类执行此操作。

答案 1 :(得分:0)

试试吧......

   public void init(Object context) {
        Display.getInstance().addEdtErrorHandler(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                evt.consume();

                Throwable exception = (Throwable) evt.getSource();
            }
        });
    }