在6月的投票中,结果昨天已经出来了,大家多数的希望多推送一些java的基础知识。首先来一下热身,debug模式启动起来..........
身为一个程序猿,开发过程中(调研--需求--产品--UI--开发--测试--上线),肯定会出现各种各样的BUG,如:程序异常、环境异常、服务器异常等等,另各位防不胜防,那么出现问题后,首先想到一个万能方法,叫做百度,除了百度,小编也总结了下常见的异常以及处理方式,冰冻三尺非一日之寒,各位不要着急。
一:异常汇总:
1:java.lang.NullPointerException 空指针异常问题
解析:
处理:
首先要看的是异常日志(不会看日志的请谷歌),定位到日志所报异常的代码行,启用debug模式,调试程序,看看哪个对象是null,并分析具体原因,如果对象可为空,则在使用之前判断是否为空条件即可
2:ConnectTimeoutException 链接超时异常问题
解析:
处理:
不管是哪种连接超时,首先看一下连接地址的IP或者端口号是否错误(90%的错),如果是网络原因,请设置连接超时时间(一般是socketTime),如下:
URL url = new
URL("你服务器的ip地址");
HttpURLConnection conn = url.openConnection();
conn.setConnectTimeout(3000); //超过3秒就连接超时了
conn.setRequestMethod("GET"); //使用的http的get方法
if
(conn.getResponseCode() == HttpStatus.SC_OK) {
//要是conn.getResponseCode()的值为200,再进行后面的操作。
}else{
}
3:ArrayIndexOutOfBoundsException 数组越界异常
解析:
数组索引越界异常原因:访问了不存在的索引
处理:
debug模式调试数组,看下数据的下标是否溢出或者不存在而导致的越界(for循环使用较多)
4:ClassCastException 类型转换异常
解析与处理:
ClassCastException是JVM在检测到两个类型间转换不兼容时引发的运行时异常。此类错误通常会终止用户请求。在执行任何子系统的应用程序代码时都有可能发生ClassCastException异常。通过转换,可以指示Java编译器将给定类型的变量作为另一种变量来处理。对基础类型和用户定义类型都可以转换。Java语言规范定义了允许的转换,其中大多数可在编译时进行验证。不过,某些转换还需要运行时验证。如果在此运行时验证过程中检测到不兼容,JVM就会引发ClassCastException异常
5:java.lang.ClassNotFoundException 类未找到异常
解析与处理:
这里主要考虑一下类的名称和路径是否正确即可,通常都是程序试图通过字符串来加载某个类时可能引发 异常,比如:调用Class.forName();或者调用ClassLoad的finaSystemClass();或者LoadClass();
6:java.lang.NumberFormatException 对象转换异常( 字符串转换为数字异常)
解析与处理:
当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.如现在讲字符型的数据“123456”转换为数值型数据时,是允许的。但是如果字符型数据中包含了非数字型的字符,如123#56,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理.
7:java.lang.NoSuchMethodException 方法不存在异常
解析与处理:
当程序试图通过反射来创建对象,访问(修改或读取)某个方法,但是该方法不存在就会引发异常
8:java.lang.OutOfMemoryException 内存不足错误
解析与处理:
当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。
9:java.lang.InterruptedException 被中止异常
解析与处理:
当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。
10:java.lang.RuntimeException 运行时异常
解析与处理:
是所有Java虚拟机正常操作期间可以被抛出的异常的父类。
11:javax.servlet.jsp.JspException: Cannot retrieve mapping for action /index.htm(/index.htm是你的action名字)
解析与处理:
action没有再struts-config.xml 中定义,或没有找到匹配的action,例如在JSP文件中使用 <html:form action="index.htm".将表单提交给index.htm处理,如果出现上述异常,请查看struts-config.xml中的定义部分,有时可能是打错了字符或者是某些不符合规则。
其它异常分类:
违背安全原则异常:SecturityException
操作数据库异常:SQLException
输入输出异常:IOException
通信异常:SocketException
二:异常的处理方式:
1)捕获异常:在Java程序运行过程中系统得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。捕获异常是通过try-catch-finally语句实现的。语法为:
try{
...
}catch(ExceptionName1 e){
...
}catch(ExceptionName2 e){
...
}finally{
...
}
2)声明抛弃异常:当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。声明抛弃异常是在一个方法声明中的throws子句中指明的。如:
public int read() throws IOException{
...
}
其中throws IOException就是声明抛弃异常,throws后可以跟多个异常类型。