-
空指针异常:NullPointerException。这个异常我们开发中最常见的异常了,产生以下图为例,其实就是blog这个对象是null,当null调用属性或者方法的时候就会报空指针异常。
改进:
①.增加条件判断
List<String> books = Dao.getData();
if(books!=null){
int size = books.size();
}
②.捕获异常
List<String> books = Dao.getData();
try{
int size = books.size();
}catch(NullPointerException e){
e.printStackTrace();
System.out.printLn("size = 0");
}
-
数组下标越界:ArrayIndexOutOfBoundsException。数组的长度决定了它所能装载的数据的量,本例子数组的长多是4,数组是从0开始计数的,但是调用的确是7,超出数组的范围,所以报错。
改进:找到错误位置,将数组名删除,只留下长度。
举例:
-
编写Java的数组示例,代码如图所示:
public class Demo {
//Java运算符的使用,主要++d和d++的
public static void main(String[] args) {
//声明数组长度为10
int num[]=new int[10];
//赋值
num[0]=0;
num[1]=1;
num[2]=2;
num[3]=3;
num[4]=4;
num[5]=5;
num[6]=6;
num[7]=7;
num[8]=8;
num[9]=9;
//历遍数组
for(int i=0;i<num.length;i++) {
System.out.println("num["+i+"]="+num[i]);
}
}
}
-
点击Run运行按钮之后,可以看到控制台输出红色的Bug,
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at org.java.demo.Demo.main(Demo.java:21)
数组下标越界的错误。如图所示:
-
鼠标点击进入报错的指定位置,21行,如图所示:
-
定位之后,可以看到是历遍数组的代码错误,由于i=10时,数组的下标越界,
需要把i<=num.length修改为i<length;如图所示:
-
修改好之后的代码,
点击Run运行按钮,如图所示:
-
可以在控制台查看输出,如图所示:
-
-
类型转换异常:ClassCastException。例子如下图,blog和atricle他们有相同的父类,他们可以强制转化成父,但是他们之间却不能互相转化。其实他们两个是两个不同个的实体。
改进:这有点像下面这道面试题原理
Father father = new Son();
Son son = (Son)father;
//以下出错,ClassCastException
Father father = new Father();
Son son = (Son) father;
在第一个例子中,father被指向一个子类对象,子类也可以指向子类对象。而第二个例子中,father被传给一个父类对象,子类引用不能指向父类对象。即很重要的概念是:父类引用指向子类对象。将父类转换为子类之前,应该用instanceof检查。
你直接new 父类对象 子类来强转就会CCE -
hql或者sql查询异常:SQLException或hql.ast.QuerySyntaxException。
改进:这是hql或者sql的异常,说明你写的sql或者hql有错误,需要调试修改。
举例:String queryString="select a from A a,B b where";
queryString=queryString+" a.Id="+"MPTRD"+b.batchId.substring(3);
即想要表A中的ID等于五个字母加上表B中ID的后四位,,但是拼接出来的都是MPTRDatchId,没有取到数据库中的值。先写另外一个list把b.batchId给查询出来,再将值赋给一个string变量S,然后
String queryString=" from A a where";
queryString=queryString+" a.id='"+"MPTRD"+S.substring(3)+"'"; -
404。路径错误。出现404一定是你的请求路径有问题,或者文件路径不存在。
改进:404代表您访问的资源找不到
原因1:
部署程序名称发生变化
解决办法:
找到tomcat对应的部署路径看下正式部署的名称
原因2
访问路径写错 -
内存溢出:OutOfMemoryError。代码中存在死循环,(处理循环)启动参数设定过小(设定服务器的启动参数增大),内存中一次加载的数据量过于庞大(减少一次加载的数据),集合类应用的对象未回收(手动回收未回收对象)
改进:
-
打开eclipse-->run-->run config..
-
将这段代码粘贴过去 这段代码可在
https://jingyan.baidu.com/article/cb5d6105c740b3005c2fe005.html的第六小结有写直接复制使用即可
-
-
第二种方式:
windows-->preferences-->选择安装jdk的地方(如果是tomocat的话就选择安装tomocat的地方)
-
然后选中已经安装好的 右侧点击编辑 edit
-
-