• JAVA常用的异常处理情况


    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]);

         }

        }

        }

        java数组下标越界怎么解决
      2. 点击Run运行按钮之后,可以看到控制台输出红色的Bug,

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

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

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

        java数组下标越界怎么解决
      3. 鼠标点击进入报错的指定位置,21行,如图所示:

        java数组下标越界怎么解决
      4. 定位之后,可以看到是历遍数组的代码错误,由于i=10时,数组的下标越界,

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

        java数组下标越界怎么解决
      5. 修改好之后的代码,

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

        java数组下标越界怎么解决
      6. 可以在控制台查看输出,如图所示:

        java数组下标越界怎么解决
    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

           
  • 相关阅读:
    我把问烂了的⭐MySQL⭐面试题总结了一下(带答案,万字总结,精心打磨,建议收藏)
    在高并发情况下我是这样解决单用户超领优惠券问题
    js 数组去重十几种解法,基础知识扎实吗?(附数组方法)
    Jackson 解析 JSON 详细教程
    解锁各种js数组骚操作,总有你想要的!
    JS 异步编程的 5 种解决方案
    YARN 架构设计 和 RPC 网络通信
    基于消息队列构建实时大数据日志分析系统_没用
    Java:List转Map (用stream实现)
    Java时间格式:yyyymmdd转换为yyyy年mm月dd日
  • 原文地址:https://www.cnblogs.com/0518liu/p/9949823.html
Copyright © 2020-2023  润新知