201521123074 《Java程序设计》第9周学习总结
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。
2. 书面作业
本次PTA作业题集异常
Q1、常用异常
题目5-1
1.1 截图你的提交结果(出现学号)
**1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?**
A:
- 经常出现数组越界异常:
ArrayIndexOutOfBoundsException
、空指针异常:NullPointerException
等。 - 不需要捕获。因为上述异常属于
unchecked exception
。一般都为编码错误,改进代码即可避免。
**1.3 什么样的异常要求用户一定要使用捕获处理?**
A:`Checked Exception`异常需要使用捕获处理。除了`Error`与`RuntimeException`及其子类以外的异常都是`Checked Exception`。
Q2、处理异常使你的程序更加健壮
题目5-2
2.1 截图你的提交结果(出现学号)
**2.2 实验总结**
A:
- 此题是
try-catch
的简单应用。在实验课上就完成了。 - 注意一点:当输入不为数字抛出异常后,计数器i应该减一,避免让其加到数组里。
Q3、throw与throws
题目5-3
3.1 截图你的提交结果(出现学号)
**3.2 阅读Integer.parsetInt源代码,结合3.1说说抛出异常时需要传递给调用者一些什么信息?**
A: 附`Integer.parsetInt`其中一部分源码如下
```
public static int parseInt(String s, int radix)
throws NumberFormatException
{if (s == null) {
throw new NumberFormatException("null");
}
if (radix < Character.MIN_RADIX) {
throw new NumberFormatException("radix " + radix +
" less than Character.MIN_RADIX");
}
- 可以看出在函数声明一开始时就写`throws NumberFormatException`,指明将要抛出的异常。
- 在每个if判断中,如: `throw new NumberFormatException("null");`满足if条件抛出异常。“()”里写抛出异常时想要说的一些声明。
<br/>
----------
**Q4、函数题
题目4-1(多种异常的捕获)
4.1 截图你的提交结果(出现学号)**

<br/>
**4.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?**
A: 捕获时需注意:按照异常的范围/优先级进行捕获。如:此题中,`NumberFormatException`、`IllegalArgumentException`这两个异常都比`Exception`的优先级低(或者说Exception包含它们,范围最大是它们的父类),所以`Exception`异常要放在那两个异常之后。不然会出现捕获不到那两个异常的错误。
<br/>
----------
**Q5、为如下代码加上异常处理**
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关闭资源。**
public static void main(String[] args) throws Exception {
byte[] content = null;
FileInputStream fis = null;
try {
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));// 打印数组内容
} catch (Exception e) {
System.out.println(e);
} finally {
if(fis!=null)
try {
fis.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
<br/>
**5.2 使用Java7中的try-with-resources来改写上述代码实现自动关闭资源。**
public static void main(String[] args) throws Exception {
byte[] content = null;
try (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)); // 打印数组内容
}
} catch (Exception e) {
System.out.println(e);
}
}
运行结果:

<br/>
----------
**Q6、重点考核:使用异常改进你的购物车系统(未提交,得分不超过6分)
举至少两个例子说明你是如何使用异常处理机制让你的程序变得更健壮。
说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)**
A1: 这是一个是展示商品信息的类,商品信息已在txt文件里写好。
import java.io.File;
import java.io.FileReader;
public class show {
public static void main(String[] args) throws Exception
{ try{
File file = new File("d:\\goods.txt");
FileReader reader = new FileReader(file);
int lenth = (int)file.length();
char[] chars = new char[lenth];
reader.read(chars);
String txt = String.valueOf(chars);
System.out.println(txt);}catch(Exception e){
System.out.println(e);
System.out.println("请检查文件是否存在");
}
}
}
- 问题:有时候txt文件会被自己删掉或者是改名字什么的,就会抛出异常找不到文件的异常。
- 解决方案:加上try-catch语句。这里改一下文件的名字。

- 之后再进行修改,把文件名改回原来的。即能得到正确的商品信息

A2:这是一个购物车类中的添加到购物车方法。
class ShoppingCart {
ArrayList shoppingList=new ArrayList();
ArrayListpurchaseList=new ArrayList();
public void add(Stuff e){try{
if (e.Num==0)
shoppingList.add(e);}catch(Exception e1)
{
System.out.println(e1);
System.out.println("所选商品数量为0,不能加入购物车");
}
}
- 问题:当商品数量为0时,程序就崩溃了,加不进购物车里。
- 解决方案:加上try-catch语句。当商品数量为0时,抛出异常,并提醒使用者。

<br/>
----------
#3. 码云上代码提交记录
**题目集:异常**
**3.1. 码云代码提交记录**
**在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图**

201521123074 《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 ...
随机推荐
- Android中的文件下载——DownLoadManager
一.问题概述 在android开发中,经常会使用到文件下载的功能,比如app版本更新等.在api level 9之后,android系统为我们提供了DownLoadManager类,这是android ...
- G++与VS2015在变量作用域上的差异性
前段时间,发现同一段C++代码在windows .Linux下的运行结果居然不一样,于是测试了一把. 我们都知道,C++中不同作用域中不同的变量是互不干扰的,可以在全局作用域.函数作用域声明同样名字的 ...
- myeclipse db browser 新建数据源
Myeclipse 新建数据源 一.打开myeclipse(打开了当我没说) 二.在window选项中找到show view ,点击other,输入db,选择DB Browser 三.在DB Brow ...
- 高CPU业务场景下的任务分发方案Gearman搭建一览
Gearman是当年LiveJournal用来做图片resize的,大家也明白图片resize是一个高CPU的操作,如果让web网站去做这个高CPU的功能,有可能会拖垮你的 web应用,那本篇我们 ...
- Android笔记: 播放提示音 的简单方法
public static void sendSound(Context mContext) { //上下文 Uri mUri= RingtoneManager.getDefaultUri(Ringt ...
- Connector
增加project bar窗口,在编辑大规模工程电路时,方便管理电路的各个层次,在分页编辑大规模工程电路时,可以用place中的off-page connector 进行每一页的联接.
- JavaScript在应用中的技巧(一)
分享一些在JavaScript中遇到的一些实用的技巧. 理解JavaScript的数值型数据类型 JavaScript的数值型数据类型只有一种:number.即不管是整数还是浮点数,JavaScrip ...
- < 软件工程 第一次作业 >
自我介绍: 老师好! 我叫李智强,专业是计算机科学与技术,我自己也喜欢这个专业,然后这是我第一次用博客写自我介绍,可能会写的有点不好,还请包涵. 课程期望和目标: 第一次上课,听着老师说我们可能会做很 ...
- C++学习日记(二)————初始字符串类型
使用频率高,但操作复杂的数据有哪些? 做下总结: int; double;float;char;bool这些类型用的比较频繁,但并不复杂.但对于字符串来说(char数组)用的频繁但操作又复杂,只能用一 ...
- hdu 3722 二分图 最优完备匹配 KM算法
这题只要想到是最优完备匹配就行了: 题意:给出n个字符串,若两两相连,将前一个反置添加到后一个后面,相连的值为两个字串从头开始相等的字符个数: 问如何匹配得出最大值: 思路:建图,套模板. 代码: # ...