201521123034 《Java程序设计》第9周学习总结
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。

2. 书面作业
本次PTA作业题集异常
常用异常
题目5-1
1.1 截图你的提交结果(出现学号)

1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?
答:经常出现ArrayIndexOutOfBoundsException、 NullPointerException、ClassCastException,这些异常不需要捕获处理,因为这些异常都是RuntimeException的子类。ArrayIndexOutOfBoundsException异常的避免需要用检测是否下标是否越界来避免,NullPointerException用检测对象是否为空来避免异常。
1.3 什么样的异常要求用户一定要使用捕获处理?
答:除了Error与RuntimeException及其子类以外的异常都是Checked Exception,即都需要捕获处理
处理异常使你的程序更加健壮
题目5-2
2.1 截图你的提交结果(出现学号)

2.2 实验总结
答:这题是在课堂上完成的,主要注意的是try-catch放的位置,并且有其中一个输错不能影响后面数据的输入。
3.throw与throws
题目5-3
3.1 截图你的提交结果(出现学号)

3.2 阅读Integer.parsetInt源代码,结合3.1说说抛出异常时需要传递给调用者一些什么信息?
if (s == null) {
throw new NumberFormatException("null");
}//要转换的对象为空时,传递给调用者说该对象为空,为NumberFormatException异常
if (radix < Character.MIN_RADIX) {
throw new NumberFormatException("radix " + radix +
" less than Character.MIN_RADIX");
}//转换的对象小于MIN_VALUE(int型最小值),则告诉调用者该对象小于该方法能转换对象的最小值,为NumberFormatException异常
if (radix > Character.MAX_RADIX) {
throw new NumberFormatException("radix " + radix +
" greater than Character.MAX_RADIX");
}//转换的对象小于MAX_RADIX(int型最大值),则告诉调用者该对象小于该方法能转换对象的最大值,为NumberFormatException异常
4.函数题
题目4-1(多种异常的捕获)
3.1 截图你的提交结果(出现学号)

3.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?
答:答:子类异常必须放在父类异常前面,catch块中的异常不得有继承关系
5.为如下代码加上异常处理
byte[] content = null;
FileInputStream fis = new FileInputStream("testfis.txt");
int bytesAvailabe = fis.available();//获得该文件可用的字节数
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
fis.read(content);//将文件内容读入数组
}
System.out.println(Arrays.toString(content));//打印数组内容
5.1 改正代码,让其可正常运行。注1:里面有多个方法均可能抛出异常。注2:要使用finally关闭资源。
byte[] content = null;
FileInputStream fis = null;
try {
fis = new FileInputStream("testfis.txt");
} catch (FileNotFoundException e) {//在改正代码之前,会出现“unhandle exception type FileNotFoundException”的错误,因此在此处加了try-catch捕获异常
// TODO Auto-generated catch block
System.out.println(e);
}
int bytesAvailabe = 0;//未改正之前提示未初始化的错误,因此bytesAvailabe要设置初始化
try {
bytesAvailabe = fis.available();
} catch (IOException e) {//捕获IOException、NullPointerException异常
// TODO Auto-generated catch block
System.out.println(e);
}catch(NullPointerException e){
System.out.println(e);
}
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
try {
fis.read(content);
} catch (IOException e) {//捕获IOException异常
// TODO Auto-generated catch block
System.out.println(e);
}finally{
if(fis!=null){
try {
fis.close();//finally关闭资源,但是如果就只是fis.close仍然会出现IOException未被处理的异常,因此根据提示仍然要加入try- catch捕获异常
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(e);
}//将文件内容读入数组
}
}
System.out.println(Arrays.toString(content));//打印数组内容
}
运行结果

5.2 使用Java7中的try-with-resources来改写上述代码实现自动关闭资源.
try(Scanner sc=new Scanner(new FileInputStream("testfis.txt"))) {
fis = new FileInputStream("testfis.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println(e);
}
6.重点考核:使用异常改进你的购物车系统(未提交,得分不超过6分)
举至少两个例子说明你是如何使用异常处理机制让你的程序变得更健壮。
说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)
//当输入的用户名为空时会出现 NullPointerException异常
public class Perinformation {
String username;
String password;
public Perinformation(String username,String password){
if(username.length()==0){
throw new NullPointerException("用户名不能为空~");
}
this.username=username;
this.password=password;
}
public Perinformation(){
}
public String toString() {
return "Perinformation [username=" + username + ", password=" + password + "]";
}
}
//用文件存储购物车信息,当打开文件的文件无法找到时会显示FileNotFoundException 异常
Goods[] book=new Books[2];
FileInputStream fileInputStream = null;
Scanner sc = null;
try {
fileInputStream = new FileInputStream("Goods.txt");
sc = new Scanner(fileInputStream);
if(sc.hasNextLine()) {
book[0]=new Books(sc.nextLine(),sc.nextDouble(),sc.nextLine());
book[1]=new Books(sc.nextLine(),sc.nextDouble(),sc.nextLine());
}
}catch(FileNotFoundException e) {
e.printStackTrace();
}finally{
if(sc==null)
sc.close();
}
3. 码云上代码提交记录
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

201521123034 《Java程序设计》第9周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 给Web前端初学者的一些建议和学习路线
做web前端开发能有10多年的时间,晚上编辑一篇文章,给初学者说一些建议. 学习 HTML,CSS 应该先跟着基础的视频学一遍.然后就需要做大量的练习,案例,案例是非常重要的,应用到实处,做各种常 ...
- 无插件VIM编程技巧(网摘)
无插件VIM编程技巧 原文出处:[陈皓 coolshell] 相信大家看过<简明Vim教程>也玩了<Vim大冒险>的游戏了,相信大家对Vim都有一个好的入门了.我在这里把我日常 ...
- Qt控件窗体区域区分
控件窗体区域区分几何参数: 指的是窗口的大小和位置,一个窗口有两套几何参数,一套是窗口外边框所占的矩形区域,另一套是窗口客户区所占的矩形区域,所谓窗口客户区就是窗口中除去边框和标题栏用来显示内容的区域 ...
- mac制作icns图标
Key steps:1) Prepare a 1024x1024 png or jpeg file;2) Download fasticns utility to convert the icon t ...
- js的点表示法和方括号表示法
最近发现了一个很好玩的js特性,就是任何可以用点表示法的语句,都可以同样用方括号表示法表示出来,就例如一下语句,三句都是可以实现的: document.body.innerHTML="tes ...
- python编码错误
初学python,遇到的最难忘的坑没有之一.这个问题起码困扰了我一周.在我写了一段代码之后经常遇见这样的报错. 本质原因是我用的python2,在编码流派中python2是比较奇葩的一派,不随大流.所 ...
- tensorflow笔记(三)之 tensorboard的使用
tensorflow笔记(三)之 tensorboard的使用 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7429344.h ...
- 2017-4-25/设计缓存(LFU)
1. 恒定缓存性能有哪些因素? 命中率.缓存更新策略.缓存最大数据量. 命中率:指请求缓存次数和缓存返回正确结果次数的比例.比例越高,缓存的使用率越高,用来衡量缓存机智的好坏和效率.如果数据频繁更新, ...
- jsp中button按钮单击莫名提交两次或刷新页面问题
<button id="btn"></button>目前还不知道原因但是在button标签中加上type="button"属性即可解决问 ...
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
一.首先说下本篇博客所实现功能的背景和功能是怎样的: 背景:因为公司项目开始迁移新平台项目,所以以前的平台老数据以及订单信息需要拆分表,而且需要业务逻辑来分析以前的订单表,来拆分成另外的几个新表,包括 ...