码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA常用的异常处理情况

时间:2018-11-13 03:01:35      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:控制台   子类   --   self   item   conf   lips   batch   选中   

  1. 空指针异常: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");

    }

  2. 数组下标越界:ArrayIndexOutOfBoundsException。数组的长度决定了它所能装载的数据的量,本例子数组的长多是4,数组是从0开始计数的,但是调用的确是7,超出数组的范围,所以报错。

    改进:找到错误位置,将数组名删除,只留下长度。

     

    举例:

    1. 编写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]);

       

       }

      }

      }

      技术分享图片
    2. 点击Run运行按钮之后,可以看到控制台输出红色的Bug,

      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

      at org.java.demo.Demo.main(Demo.java:21)

      数组下标越界的错误。如图所示:

      技术分享图片
    3. 鼠标点击进入报错的指定位置,21行,如图所示:

      技术分享图片
    4. 定位之后,可以看到是历遍数组的代码错误,由于i=10时,数组的下标越界,

      需要把i<=num.length修改为i<length;如图所示:

      技术分享图片
    5. 修改好之后的代码,

      点击Run运行按钮,如图所示:

      技术分享图片
    6. 可以在控制台查看输出,如图所示:

      技术分享图片
  3. 类型转换异常: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

  4. 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)+"‘";

  5. 404。路径错误。出现404一定是你的请求路径有问题,或者文件路径不存在。

    改进:404代表您访问的资源找不到
    原因1:
    部署程序名称发生变化
    解决办法:
    找到tomcat对应的部署路径看下正式部署的名称
    原因2
    访问路径写错

  6. 内存溢出:OutOfMemoryError。代码中存在死循环,(处理循环)启动参数设定过小(设定服务器的启动参数增大),内存中一次加载的数据量过于庞大(减少一次加载的数据),集合类应用的对象未回收(手动回收未回收对象)

    改进:

      1.  配置内存溢出呢一共有两个方法

        打开eclipse-->run-->run config..

         

         
      2. 注意红色箭头的地方

        将这段代码粘贴过去  这段代码可在

        https://jingyan.baidu.com/article/cb5d6105c740b3005c2fe005.html的第六小结有写直接复制使用即可

         
      3.  然后run  运行
         
         
      4. 第二种方式:

        windows-->preferences-->选择安装jdk的地方(如果是tomocat的话就选择安装tomocat的地方)

      5. 然后选中已经安装好的 右侧点击编辑 edit

      6. 最后将代码复制进...vm arguments然后finish-->确定即可

        记得重新启动eclipse

         

JAVA常用的异常处理情况

标签:控制台   子类   --   self   item   conf   lips   batch   选中   

原文地址:https://www.cnblogs.com/0518liu/p/9949823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!