codenameone:如何显式处理异常java.net.ConnectionException

时间:2016-08-17 04:09:23

标签: codenameone

codenameone:如何显式处理异常java.net.ConnectionException 我想明确地处理异常。当前我正在处理异常它首先隐式处理,其中详细显示了屏幕上的异常消息。我不想在屏幕上显示错误消息(弹出对话框)。 现在它显示了异常Java.net.Connection异常:拒绝连接URL http:localhost / login connection refused.ins以及此消息我只想显示"连接被拒绝"弹出对话框中的消息

能告诉我如何解决它。

1 个答案:

答案 0 :(得分:1)

在移动设备上,错误可能与模拟器上的错误完全不同,因为我们正在处理表面下的本机API。请参阅networking section in the developer guide的错误处理部分:

有两个不同的位置可以处理网络错误:

  • ConnectionRequest - 通过覆盖回调方法
  • NetworkManager错误处理程序

请注意,NetworkManager错误处理程序优先,因此允许您通过消耗错误来定义网络错误处理的全局策略。

E.g。如果我想阻止所有网络错误向用户显示任何内容,我可以这样做:

NetworkManager.getInstance().addToQueue(request);
NetworkManager.getInstance().addErrorListener((e) -> e.consume());

首先调用错误侦听器,使NetworkEvent与错误匹配。使用该事件可以防止它在链中进一步传播到ConnectionRequest回调中。

我们还可以覆盖请求中各种类型的错误回调,例如如果是服务器错误代码,我们可以这样做:

ConnectionRequest request = new ConnectionRequest(url, false) {
    protected void handleErrorResponseCode(int code, String message) {
        if(code == 444) {
            // do something
        }
    }
    protected void handleException(Exception err) {
        // handle exception that occurred. Notice you can either have this or have the listener on the NetworkManager
    }
    protected void readResponse(InputStream input) {
        // just read from the response input stream
    }
};
NetworkManager.getInstance().addToQueue(request);