首页 > 数据库 >关于微人事中POI导入文件到数据库的异常以及自己的一些技术心得

关于微人事中POI导入文件到数据库的异常以及自己的一些技术心得

时间:2023-02-19 11:12:13浏览次数:41  
标签:心得 方法 越界 获取 导入 POI 异常 调试

前言

  在近四个月的时间里面,我的微人事项目才逐渐接近尾声,在昨天的测试接口中出现了两次数组越界以及一次空指针异常,三处异常我都通过吊事bug根据项目实际情况解决了,但是在空指针异常那里还是带有疑问,起初我是通过POI导出文件来导出数据库中的所有员工资料,后面怕数据库信息太多,就将员工数据删减到两条,但是为什么在POI导入文件代码的获取行数的时候获取到的行数还是最开始我导出员工数据的行数,这是我在昨天的测试接口中还未弄清楚的一点,如果有哪位直到请帮忙解释下。此次最重要的感受是我通过调试bug解决异常从而增进了自己的调试接口能力。

异常

  1. 在测试POI的导入文件接口的时候总共出现过两次数组越界异常。
  2. 数组越界异常:1)获取所有部门ID的时候、2)比较position对象属性值与单元格值时候出现的不存在报错-1;
  3. 空指针异常是出现在单元格空值。

原因

  1. 第一次数组越界异常是因为自己获取所有部门信息的函数调用错误
  2. 第二次数组越界异常是由于自己的Position实体类中没有添加重写的equals()方法(只比较name值)
  3. 空指针异常在于我获取的单元格行数为619(因为我是以导出数据库所有员工资料的基础上进行删除的),为了测试方便我删除了617行员工数据,只留下2行员工数据

解决方法

  之前也是一直听我亲戚说通过调试bug来解决自己遇到的可解决的异常,我在网上找了一些视频进行了基础的了解,只知道简单的概念,自己没有落到实处,此次在这个调试接口的过程中,逐渐有了一些感受;

  1. 关于获取部门所有id,我是通过调试看到获取的id数量为1,但是我的数据表中部门数量为20,后面查看调用函数发现是自己在servce层调用获取所有部门id的函数调用错误
  2. 关于position的这个数组越界异常我调试了很久,心想的job_level进行验证就没有问题,为什么position类有问题呢,我首先是比较两者调试的区别,后面发现在joblevel接口测试的时候出现了equals方法比较joblevel的name值与数据表中的所有joblevel值进行比较,而我的position并没有进行比较就直接报错-1;这时我就发现是因为我的Position实体类中没有添加equals方法,后面就直接通过快捷键添加该方法进行比较,但是还是出现问题,再次查看joblevel的equals()方法,发现它只进行了name值比较,转头一想在单元格值与数据表中数据进行比较的时候也只是比较name一个值,故修改了eqauls()方法,后面就没有出现该类异常。
  3. 解决完上面的两个数组越界异常的时候,又出现了空指针异常;虽然出现了问题,但是我充满了解决问题的信心,因为我通过前两次的调试,觉得自己行。故我就从出错地方开始打断点调试,发现导入一个用户没有问题,两个用户也没有问题,再导入第三个用户的时候出现空指针异常,再去查看获取行的参数时候出现了619,而我想要的是3,故此找到了问题所在,但是还是没有弄明白为什么我已经删除了之前数据,但是POI还是获取的行数为619

小结

  本次调试bug重点是在于加深了几个调试按钮F8、9、10、11的概念以及方法调用的步骤

  1. F8:跳过方法,F9进入自己编写的方法,F10进入源码,F11跳出方法
  2. 关于方法调用都是一层接一层的调用,一步步执行

标签:心得,方法,越界,获取,导入,POI,异常,调试
From: https://www.cnblogs.com/kzf-99/p/17134327.html

相关文章

  • poi 写 2003,2007 excel
    这段代码是poi官网上给的,不过里面有些变量重复定义,我稍微改了下注意,此代码是在poi-3.7-20101029.jar下packagecom.club.community.util;import......
  • 宝可梦ptcg个人心得
    1.对战思路卡组有各种类型,速攻(小人牌),控制,多变(超梦),熟悉自己的卡组和关键key卡,记住是否卡奖和关键局如何选择。思路还是多打高质量对局,自己卡组的思路熟悉的很快,也要熟悉对......
  • 大数据分析———(1)数据导入
    本次数据分析在Hadoop大数据平台的基础上,导入外部数据,使用Spark进行数据清洗,使用Hive进行数据存储,同时使用Tableau进行可视化展示。本次使用数据为《NBA2011-2012季后赛球......
  • 导入file-transfer引起的错误。找不到Whitelist
    把Whitelist改成AllowList//importorg.apache.cordova.Whitelist;importorg.apache.cordova.AllowList; //Whitelistwhitelist=(Whitelist......
  • C++代码并行优化心得(OpenMP & TBB & Thread Pool)
    待更!  cmake引入OpenMP使用cmake中find_package指令查找openmp,格式如下:find_package(OpenMPREQUIRED)cmaketarget_link_libraries链接openmp:target_link_......
  • Blender 图像软件入门教程 导出glb ,gltf格式文件 blender导入glb格式文件
    环境:3.4.1实现功能:导出glb格式文件点击视图左上方文件按钮,点击导出,点击gltf2.0(.glb/gltf)  blender导入glb格式文件视图右上方,选择Collection,鼠标右键,点击删除......
  • docker容器之dockerfile&docker-compose CMD/entrypoint详解
    docker容器之dockerfile&docker-composeCMD/entrypoint详解本文目录 [隐藏]I.CMDII.ENTRYPOINTIII.示例ENTRYPOINTCMD/command此前的RUN和CMD,我......
  • 多传感器融合:MVP和PointPainting
    多传感器融合相关的理论真的可以非常复杂,而在感知方面,由于可以和深度学习做结合,所以很多工作可以变得简单有效,有时候一个简单的特征融合都会有很好的效果。本文结合3D物体......
  • 富文本编辑器实现从PowerPoint中复制图片
    ​ 如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml......
  • SharePoint Online 重置站点索引
    前言之前,我们为大家介绍了如何重置文档库的搜索索引,然后,有些搜索功能重度使用的小伙伴抓狂了,为什么呢?有些小伙伴更新了好多文档库,然后,需要不停的设置索引,麻......