首页 > 学院 > 开发设计 > 正文

JavaSe:常见异常总结

2019-11-14 15:26:02
字体:
来源:转载
供稿:网友

没有任何开发人员敢说自己开发的程序没有问题,没有任何人敢说自己在开发过程中不会遇到问题。遇到问题时,通常都会根据日志中的异常、错误或者提示信息来Debug,修复问题。

 

当然了,一些常见的问题,还是需要总结一下了,再次遇到这样的问题时,就知道怎么处理它,下面就列出一些开发过程中会遇到的问题。

 

NullPonitException

    这个异常可以说是最为常见的异常了。当遇到这个问题时,大多数情况都是因为没有对null值判断引起的,对于这种情况,都要加上空值的处理。

    但是我们在查问题时,不能仅局限于空值的处理,更要调查数据为什么是空的,这一点很重要。我处理过这样一个问题,在Console访问JMS资源时出现在NullPointException,调查时发现取得的数据是null。但实际情况下,这个值是不应为null。这就说明有其它的潜在的问题存在了。

 

java class 从加载到使用有下列过程 :加载、连接(检验、准备、解析)、初始化。

 

ClassNotFoundException

    这个类也是比较好理解的。但是找问题的原因并不轻松的。如果想要轻松的找出这个问题的原因,需要对ClassLoader的知识有所了解。这个错误发生在类的加载时,通过类的字符串名称加载时,并且是从ClassLoader的搜索下查找类的。

    出现这个问题时,可能有下列原因:

1) 搜索路径下,应该有某个类或者某个jar,但却没有。

2) 搜索路径错误,这个对应的就是ClassLoader使用错误或者ClassLoader的搜索路径设置不正确。

3)对于使用了OSGi的应用,搜索路径下有这个类,但却找不到,就要从MANFIST文件中查这个类所在的包是否在export-package中。

 

UnsupportedClassVersionError

class文件中会有编译时使用的JDK的版本号,JDK是向后兼容的,也就是说jdk6上编译的class文件可以在JDK7、JDK8...上运行。

这个Error出现连接阶段的检验过程中。另外当检验的过程中,发现当前的JDK版本(主版本、小版本)低于编译时使用的版本,就会报这个错误。

出现这个错误一般有两种解决方案:

1)如果要求一定要在当前JDK版本上运行的话,就重新对项目使用当前版本的JDK编译打包。

2)如果对运行时使用的JDK版本没有要求的话,可以换用高版本的JDK。

 

java.net.ConnectException: Connection refused

这个错误出现,可能是下面几种情况:

1)ip不对 或者(和)port不对 ; 2)指定Ip上的port没有被监听。

 

 java.net.ConnectException  Connection time out

这个错误,目前见过两种情况:

1)配置了防火墙。

2)没有配置防火墙时,Web请求长时间没有得到处理,一直在请求wait queue中,导致Client(web broswer)Close了连接。

java.net.BindException:Address already in use : JVM_Bind

端口占用了。这个要搞清是被谁占用了。

如果是被其它程序占用了,是否需要修改端口。

如果是被程序本身运行过程占用了,就要想办法解决这个问题。

在使用JMX时,会有随机端口的使用。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表