在编写实验的过程中,在进行代码测试和运行客户端代码时,总会因为输入值得原因或者是一些ADT设计中不合理的地方,抛出一些unchecked或是checked异常,在这里我想总结一下这些常遇到的错误,来方便以后程序的编写。

一.checked:

1.在实验一的编写中,需要输入文件,我使用的方法是:

File file=new File(fileName);
BufferedReader fr1 = new BufferedReader(new FileReader(file));
String line;
while ((line = fr1.readLine()) != null) {width++;
}fr1.close();

在其中,如果找不到对应文件,就会抛出FileNotFoundException,通过在网上查阅资料得知,如果文件拒绝访问,也会抛出这样的exception。比如,在构建一个File对象时,如果路径不存在,那么就会在指定路径创建一个对应文件,但是如果要进行输入输出操作,路径不存在的话,就会抛出这样的exception。

2.IOException

在读写数据出错的时候会抛出这种异常,比如

InputStream input = new FileInputStream(......);int a = input.read();while(a != 0) {....................a = input.read();}input.close();

有可能input永远也关不上,这种情况下就会抛出IOException。

二.unchecked

1.NullPointerException:空指针异常,出现这种异常的可能原因有:接口类型的对象没有用具体的类初始化,比如使用Set set;时就会报错;字符串变量未初始化,比如定义了String str = null;然后使用了这个字符串,就会抛出空指针异常。

2.IndexOutOfBoundsExecption:

同样在实验三的编写过程中我遇到了这个问题

在设计一个投票活动的计票方法时,我采用了这样的方式

public void statistics(StatisticsStrategy ss) {// 此处应首先检查当前所拥有的选票的合法性// TODOList<Double> points = new ArrayList<>();List<Double> weight = new ArrayList<>();int i = 0;for(Voter voter:voters.keySet()){weight.set(i++, voters.get(voter));}for(i = 0;i < candidates.size();i++){points.set(i, 0.0);}for(Vote<C> v:votes){Set<VoteItem<C>> set = v.getVoteItems();for(VoteItem<C> vi:set){for(i = 0;i < candidates.size();i++){if(candidates.get(i).equals(vi)){Double value = points.get(i);points.set(i, value + ss.calculate(vi.getVoteValue(),weight.get(i)));}}}}for(i = 0;i < candidates.size();i++){statistics.put(candidates.get(i), points.get(i));}}

第一步要先将每个投票者所占得权重复制到一个List中,并将每个候选人的初始分数设置为0,在这里我直接使用了set方法,将索引位置的值修改,然而我并没有对这两个新的ArrayList进行初始赋值操作,导致索引位置并没有值,所以就会抛出数组越界异常:

将这两个set方法修改为add方法,就可以很简单地解决这个问题:

List<Double> points = new ArrayList<>();List<Double> weight = new ArrayList<>();int i = 0;for(Voter voter:voters.keySet()){weight.add(i++, voters.get(voter));}for(i = 0;i < candidates.size();i++){points.add(i, 0.0);}

常见的exceptions总结相关推荐

  1. dubbogo 回顾与展望

    Dubbo 是阿里于 2011 年开源的一款高性能 RPC 框架,在 Java 生态中具有不小的影响力.2019年5月21日,Dubbo 从 Apache 软件基金会毕业,成为 Apache 顶级项目 ...

  2. Supporting Python 3(支持python3)——常见的迁移问题

    2019独角兽企业重金招聘Python工程师标准>>> 常见的迁移问题 如果你按照该建议来确保你的代码使用Python 2.7 - 3来运行没有警告,一些现在会遇到的简单错误都是可以 ...

  3. html 跨域_常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  4. exhaustion java_Java Exceptions

    1. 常见错误分类 一般的,errors可以分为以下几类: user input errors device errors or physical limitations code errors 2. ...

  5. python谷歌浏览器驱动安装失败_阿里云centos7.2下安装chrome浏览器+webdriver+selenium及常见设置-傻瓜教程...

    Linux版本:阿里云CentOS Linux release 7.2.1511 (Core) root用户下 测试时间:2019-04-16 1.安装chrome浏览器 1.1 创建yum源文件 c ...

  6. Java代码中常见技术债务处理之Exception

    写在前面 异常处理是代码中常见的处理,本文根据SonarQube在异常方面的规则和常见检查结果,选取说明了常见异常处理中的技术债务,提倡技术债务最少的编码方式. Exception handlers ...

  7. Delphi常见的运行期Access Violation错误分析

    Delphi常见的运行期Access Violation错误有哪些?如何防止? 任何软件开发都会遇到这样的情况:你写好程序并测试,然后到处发送,结果用户告诉你它失败了. 你可能考虑用编译指令{$D}编 ...

  8. numberformatexception是什么异常_译文《最常见的10种Java异常问题》

    封面:洛小汐 译者:潘潘 知彼知己,方能百战不殆. 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践 ...

  9. 常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

最新文章

  1. 未来的计算机老素描画,考试这么无聊?学生把手画成“平面”,老师:未来的“美术大师”...
  2. 手撕ArrayList底层,透彻分析源码
  3. 并发模拟的四种方式 + 工具,超级实用!
  4. 如何构建和部署 SAP Commerce Cloud 项目
  5. hierarchy change in CRM - step1 inbound CSAIBASE queue
  6. linux python3运行,将Python3安装到Linux上并运行
  7. Spark API编程动手实战-08-基于IDEA使用Spark API开发Spark程序-01
  8. Spring-bean的作用域(六)
  9. Python版冒泡法排序算法
  10. 开源2D图形库/图形框架
  11. Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式
  12. UnityShader19.1:渲染纹理(下)之GrabPass
  13. freebsd mysql5.7_FreeBSD 环境下Mysql问题解决方法集锦
  14. 北京大学生物信息学学习(3动态规划进行2序列比对的原理 )
  15. 二十 二分搜索树的完整实现及其复杂度分析
  16. content=IE=edge,chrome=1的meta标签内容
  17. 浅谈串口DCB流控制设置
  18. Android 倒计时器工具类
  19. 第一次去曼谷旅游怎么玩?这份省钱攻略请收好
  20. win7+vs2015+cuda8.0+cudnn5.1+caffe+tensorflow+keras环境搭建

热门文章

  1. Finding Your Better Half
  2. 服务器不能用pe安装win7系统安装,PE安装win7系统失败的完美解决方案
  3. 魔法少女小圆计算机音乐,魔法少女小圆 无损音乐合集
  4. C语言函数指针和返回指针值的函数
  5. python web论坛_十个基于Python的BBS论坛类开源web框架汇总(附源码地址)
  6. 基于AForge的C#摄像头视频录制
  7. 单片机看门狗c语言,单片机看门狗程序 -解决方案-华强电子网
  8. 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
  9. CoolEdit导出片段文件
  10. php服务器能运行java吗_将PHP与Java服务器接口