2

codenameoneを使用してアプリを構築しています

つまり、アプリを使用して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が非アクティブの場合、不明なホスト例外がスローされます。

したがって、このエラーをキャッチするために、次のようなtrycatchブロックを使用しようとしました。

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

しかし、それでもアプリのダイアログの形でエラーが発生します。このエラーをキャッチして、独自の処理を行うにはどうすればよいですか?

更新1:

これが必ずしも特定の質問のコード名であるか、Javaに関連しているのかわからないので、これを手伝ってください。

4

2 に答える 2

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つのクラスに対してのみ実行します。

于 2012-07-22T13:45:14.460 に答える
0

それを試してみてください...

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

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

                Throwable exception = (Throwable) evt.getSource();
            }
        });
    }
于 2014-02-13T16:07:11.747 に答える