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