常见的exceptions总结
在编写实验的过程中,在进行代码测试和运行客户端代码时,总会因为输入值得原因或者是一些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总结相关推荐
- dubbogo 回顾与展望
Dubbo 是阿里于 2011 年开源的一款高性能 RPC 框架,在 Java 生态中具有不小的影响力.2019年5月21日,Dubbo 从 Apache 软件基金会毕业,成为 Apache 顶级项目 ...
- Supporting Python 3(支持python3)——常见的迁移问题
2019独角兽企业重金招聘Python工程师标准>>> 常见的迁移问题 如果你按照该建议来确保你的代码使用Python 2.7 - 3来运行没有警告,一些现在会遇到的简单错误都是可以 ...
- html 跨域_常见跨域解决方案以及Ocelot 跨域配置
常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...
- exhaustion java_Java Exceptions
1. 常见错误分类 一般的,errors可以分为以下几类: user input errors device errors or physical limitations code errors 2. ...
- python谷歌浏览器驱动安装失败_阿里云centos7.2下安装chrome浏览器+webdriver+selenium及常见设置-傻瓜教程...
Linux版本:阿里云CentOS Linux release 7.2.1511 (Core) root用户下 测试时间:2019-04-16 1.安装chrome浏览器 1.1 创建yum源文件 c ...
- Java代码中常见技术债务处理之Exception
写在前面 异常处理是代码中常见的处理,本文根据SonarQube在异常方面的规则和常见检查结果,选取说明了常见异常处理中的技术债务,提倡技术债务最少的编码方式. Exception handlers ...
- Delphi常见的运行期Access Violation错误分析
Delphi常见的运行期Access Violation错误有哪些?如何防止? 任何软件开发都会遇到这样的情况:你写好程序并测试,然后到处发送,结果用户告诉你它失败了. 你可能考虑用编译指令{$D}编 ...
- numberformatexception是什么异常_译文《最常见的10种Java异常问题》
封面:洛小汐 译者:潘潘 知彼知己,方能百战不殆. 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践 ...
- 常见跨域解决方案以及Ocelot 跨域配置
常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...
最新文章
- 未来的计算机老素描画,考试这么无聊?学生把手画成“平面”,老师:未来的“美术大师”...
- 手撕ArrayList底层,透彻分析源码
- 并发模拟的四种方式 + 工具,超级实用!
- 如何构建和部署 SAP Commerce Cloud 项目
- hierarchy change in CRM - step1 inbound CSAIBASE queue
- linux python3运行,将Python3安装到Linux上并运行
- Spark API编程动手实战-08-基于IDEA使用Spark API开发Spark程序-01
- Spring-bean的作用域(六)
- Python版冒泡法排序算法
- 开源2D图形库/图形框架
- Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式
- UnityShader19.1:渲染纹理(下)之GrabPass
- freebsd mysql5.7_FreeBSD 环境下Mysql问题解决方法集锦
- 北京大学生物信息学学习(3动态规划进行2序列比对的原理 )
- 二十 二分搜索树的完整实现及其复杂度分析
- content=IE=edge,chrome=1的meta标签内容
- 浅谈串口DCB流控制设置
- Android 倒计时器工具类
- 第一次去曼谷旅游怎么玩?这份省钱攻略请收好
- win7+vs2015+cuda8.0+cudnn5.1+caffe+tensorflow+keras环境搭建
热门文章
- Finding Your Better Half
- 服务器不能用pe安装win7系统安装,PE安装win7系统失败的完美解决方案
- 魔法少女小圆计算机音乐,魔法少女小圆 无损音乐合集
- C语言函数指针和返回指针值的函数
- python web论坛_十个基于Python的BBS论坛类开源web框架汇总(附源码地址)
- 基于AForge的C#摄像头视频录制
- 单片机看门狗c语言,单片机看门狗程序 -解决方案-华强电子网
- 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
- CoolEdit导出片段文件
- php服务器能运行java吗_将PHP与Java服务器接口