导航:首页 > 异常信息 > java如何判定网络异常

java如何判定网络异常

发布时间:2023-07-15 03:27:02

Ⅰ Java 网络通信异常求解

这个你这种方式是不能直接readObject的。除了服务器那边通过writeObject写对象,客户端这边通过socket.getInputStream来readObject,这种要对象是序列化的,不过一般不用这种方式。
另一种是像你这种,服务端那边直接写字节,客户端读取字节,然后解析,再给对象属性赋值,这种我们用的xsocket的框架,支持异步的,你可以到网上看下。

Ⅱ java操作数据库偶尔出现网络通信异常的原因

网络通信时连接中断。根据查询相关公开信息显示,出现网络通信时连接中断情况,导致java操作数据库偶尔出现网轿蚂络通信异常,可以重新连接网络后重试。Java是一门面向对象仿宴的编程闭大埋语言,不仅吸收了C加加语言的各种优点,还摒弃了C加加里难以理解的多继承、指针等概念。

Ⅲ 在一个java类中如何来捕获网络异常

try{ ServerSocket server=new ServerSocket(8888); server.setSoTimeout(100); }catch (SocketException e) { e.printStackTrace(); }catch(IOException e1){ e1.printStackTrace(); }

Ⅳ Retrofit2.0+RxJava网络请求异常统一处理

本文内容是基于RxJava 2.0及Retrofit 2.1分析的。参考了 Rxjava +Retrofit 你需要掌握的几个技巧,Retrofit缓存,统一对有无网络处理, 异常处理,返回结果问题
下面列出具体添加的依赖。

以下这些错误,都是在网络请求中经常见的。我们可以通过Toast弹出消息通知用户具体的异常以及加载对应的UI界面。除此之外,通过具体的异常信息,方便我们及时的排查项目中的BUG。

那么问题就来了,我们如何判断异常的类型?

这就要从服务器返回的数据格式说起了。

我们一般请求的返回都是像下面这样

服务器端返回数据约定俗称就是大概以上的格式。可能具体的code码表示的含义不一样,这个可以与服务器端人员交流,灵活变化。
关于Retrofit的基本配置就不再讲述了,这里具体讲解如何对服务器返回数据封装以及使用RxJava对错误信息处理。

封装返回数据
对于上述的服务器返回数据我们要对code做出一些判断,code不为200(假设200表示请求网络成功)就抛出异常。所以我们新建一个BaseResponse类,对应上面的数据结构。

这算是所有实体的一个基类,data可以为任何数据类型。

然后要对返回结果进行预处理,新建一个ExceptionHandle。预处理无非就是当根据返回数据BaseResponse的isOk()方法判断为是否为true,若为true则正常处理,否则抛出异常让ExceptionHandle进一步处理,判断异常为何种异常。我们先跳过前面的逻辑,先了解如何判断是何种异常?

判断异常类型

详细可看源码,下面会贴出地址。
通过ExceptionHandle.handleException(Throwable e) 即可返回一个异常,并携带具体异常类型信息。

现在我们已经知道了如何判断是否产生以上以及如何判断异常类型。接下来需要解决地就是如何把异常传递给Observer的onError(Throwable e)去处理异常。

在进行异常传递的过程中,第一步我们先要判断服务器返回的数据是否是异常,如果不是异常则返回data数据,如果是异常则抛出异常。这个时候就包含了一个数据转换的过程即把BaseResponse对象转换成data类型的对象,所以需要map()操作符。

其中HandleFuc实现了 Function<BaseResponse<T>, T> 接口

如果不出现异常则不会走第二步。如果出现异常,则需要进行第二步,即对异常进行判断,然后将ExceptionHandle.handleException(Throwable e) 返回的异常传入onError()中处理。

重点来了:当产生异常时,应该终止对onNext()方法的调用并调用onError()方法。如果不继续处理,仅通过以上步骤,虽然会调用onError()方法,但是没有对异常进行判断,并且没有取消onNext()方法。那么有没有一个好的方法,可以即取消onNext()方法,又能在其中实现异常判断的执行,并且会调用onError()方法?

如此强大的RxJava自然有这样的方法了, onErrorResumeNext() 就能实现这个要求。对于 onErrorResumeNext() ,可以简单理解为:当发生错误的时候,由另外一个Observable来代替当前的Observable并继续发射数据。

onErrorResumeNext() 中传入的参数可以是一个Function接口。这样,我们可以在Function中生成一个Observable,该Observable执行异常判断的逻辑,并调用onError()方法。
具体实现如下:

至此,我们便实现了异常判断与传递的逻辑。这样我们就可以在onError()方法中提取具体的异常状态信息,进行相应的处理。

大概流程是:map()进行数据类型转换,并检测异常。如果正常,返回data类型的数据。如果不正常,onErrorResumeNext()判断异常类型并传递异常

上述情况关闭了网络。当发起网络请求,没有网络则抛出异常,然后检测出具体异常,Toast提示异常类型,用户便知道是什么地方出错了。

demo参考地址: https://github.com/maioo/RetrofitRxJavaException

阅读全文

与java如何判定网络异常相关的资料

热点内容
网络共享中心没有网卡 浏览:490
电脑无法检测到网络代理 浏览:1348
笔记本电脑一天会用多少流量 浏览:473
苹果电脑整机转移新机 浏览:1347
突然无法连接工作网络 浏览:959
联通网络怎么设置才好 浏览:1188
小区网络电脑怎么连接路由器 浏览:929
p1108打印机网络共享 浏览:1184
怎么调节台式电脑护眼 浏览:601
深圳天虹苹果电脑 浏览:839
网络总是异常断开 浏览:582
中级配置台式电脑 浏览:893
中国网络安全的战士 浏览:601
同志网站在哪里 浏览:1378
版观看完整完结免费手机在线 浏览:1430
怎样切换默认数据网络设置 浏览:1077
肯德基无线网无法访问网络 浏览:1252
光纤猫怎么连接不上网络 浏览:1374
神武3手游网络连接 浏览:936
局网打印机网络共享 浏览:973