codenameone - 在代号一中捕获未知主机异常

标签 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 block :

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

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

更新 1:

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

最佳答案

试试这个来处理所有连接的一般错误:

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) {
}

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

关于codenameone - 在代号一中捕获未知主机异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11598241/

相关文章:

ios - 代号一个文本域密码约束

android - GoogleMap 快照方法返回白色图像

codenameone - 代号一如何在图标顶部添加徽章并将其放置在工具栏中

codenameone - 从 CodenameOne 访问设备操作系统内存

codenameone - 使用代码滑动可滑动容器时组件不显示

java - CodenameOne 应用程序构建给出 Retrolambda IllegalArgumentException

testing - CodenameOne TestRecorder 如何运行测试

android - findViewById(R.layout.my_layout) 在 Android Native 实现中可用吗?

events - 如何为 CodenameOne TextField 中的每个更改获取事件

java - 代号一 javafx.util.pair