201521123103 《Java学习笔记》 第九周学习总结
一、本周学习总结
1.以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。

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

1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?
答:数组下标越界 无需捕获 该异常由系统检测,无需捕获,属于Runtime Exception.可以用户检查避免。
访问空指针 无需捕获 由于代码失误改进代码即可。
输入错误 需要捕获 使用try-catch处理
1.3 什么样的异常要求用户一定要使用捕获处理?
答:运行程序时发生的错误,需要异常机制捕获处理,属于Checked Exception的异常。
2、处理异常使你的程序更加健壮 题目5-2
2.1 截图你的提交结果(出现学号)

2.2 实验总结
答:捕获后,用i--返回当前错误的位置,重新赋值。parseInt()方法,try-catch处理异常方法的使用。

3、throw与throws 题目5-3
3.1 截图你的提交结果(出现学号)

3.2 阅读Integer.parsetInt源代码,结合3.1说说抛出异常时需要传递给调用者一些什么信息?


答:一开始一堆函数抛出,可以使调用者清晰的看出异常的原因,便于修改,使程序更加完善。首先throws抛出异常,然后根据具体的异常throw不同的异常原因。3.1例如当arr数组越界则抛出ArrayIndexOutOfBoundsException异常;begin>=end,抛出IllegalArgumentException("begin:"+begin+" >= end:"+end);
4、函数题 题目4-1(多种异常的捕获)
4.1 截图你的提交结果(出现学号)

4.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?
答:(1)每个catch块捕获不同类型的异常;
(2)子类异常要在父类异常的前面;
(3)sc.close();要放在循环外面;
(4)Java提供的多重异常捕获语法;catch块中的异常不能有继承关系,如catch(EOFException|IndexOutOfBoundsExcetion e){...}。
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关闭资源。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
public class Main4 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
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);//将文件内容读入数组
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println(e);
}
finally
{
if(fis!=null)
try{
fis.close();
}catch(Exception e){
System.out.println(e);
}
}
System.out.println(Arrays.toString(content));//打印数组内容
}
}

5.2 使用Java7中的try-with-resources来改写上述代码实现自动关闭资源.
查看PPT:Java7中提供了自动尝试关闭资源的语法,可将尝试自动关闭资源的对象生成写在try之后的圆括号中。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
public class Main5 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
byte[] content = null;
try(FileInputStream fis = new FileInputStream("testfis.txt");) {
int bytesAvailabe = fis.available();//获得该文件可用的字节数
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
fis.read(content);//将文件内容读入数组
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println(e);
}
System.out.println(Arrays.toString(content));//打印数组内容
}
}

6、重点考核:使用异常改进你的购物车系统(未提交,得分不超过6分)
举至少两个例子说明你是如何使用异常处理机制让你的程序变得更健壮。
说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)
查询不到商品,抛出异常。
public class Product{
private Product p = new Product();
public List<Product> findAll(){
try {
return p.findAll();
} catch (Exception e) {
System.out.println(e);
}
}
}
加入购物车失败,抛出异常。
String f=true;
try{
while (in.hasNext()) {
Product p1 = (Product)in.next();
if (p1.getId().equals(p.getId())) {
cart.put(p1, cart.get(p1)+1);
f = false;
}
}
if (f) {
cart.put(p, 1);
}
}catch(Exception e){
System.out.println(e);
System.out.println("添加失败,重新添加");
}
三、码云上代码提交记录
题目集:异常
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

201521123103 《Java学习笔记》 第九周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20175314 《Java程序设计》第九周学习总结
20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...
- 20175126《Java程序设计》第九周学习总结
# 20175126 2016-2017-2 <Java程序设计>第九周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第十一章,本章 ...
- 20175234 2018-2019-2 《Java程序设计》第九周学习总结
目录 20175234 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码托管 感想 学习进度条 参考资料 20175234 2 ...
- 20165235 祁瑛 2018-4 《Java程序设计》第九周学习总结
20165235 祁瑛 2018-4 <Java程序设计>第九周学习总结 教材学习内容总结 URL类 UR类是java.net包中的一个重要类,使用URL创建的对象的应用程序称作称作客户端 ...
- 20172325 2018-2019-2 《Java程序设计》第九周学习总结
20172325 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 图的定义 图是由顶点集(VertexSet)和边集(EdgeSet)组成,针对图G,顶点集和 ...
- 20155334 2016-2017-2 《Java程序设计》第九周学习总结
20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...
随机推荐
- 云计算之openstack mitaka 配置详解(将疑难点都进行划分)
在配置openstack项目时很多人认为到处是坑,特别是新手,一旦进坑没有人指导,身体将会感觉一次次被掏空,作为菜鸟的我也感同身受,因为已经被掏空n次了. 以下也是我将整个openstack配置过程进 ...
- JavaScript入门(二)
一.JS中的运算符 1.算术运算(单目运算符) + 加.-减.*乘. /除. %取余.++自增运算符 .--自减运算符; >>>+:有两种作用,链接字符串/加法运算符.当+两边全为数 ...
- IOS开发中多线程的使用
一.创建多线程的五种方式 1.开启线程的方法一 NSThread * thread=[[NSThread alloc] initWithTarget:self selector:@selector(_ ...
- 第一次使用windows版的Git,附上一些配置和最常用的git命令
Git配置:git config --global user.name "用户姓名" git config --global user.emall "用户邮箱" ...
- 为什么新生代内存需要有两个Survivor区
转载自:http://blog.csdn.net/antony9118/article/details/51425581 在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? ...
- 【教程】webstorm的破解以及汉化
安装包以及汉化包的下载(大小151M): 链接:http://pan.baidu.com/s/1hsA5GUS 密码:roui 破解: 正常安装的webstorm是要注册码的,这里教你免费使用的方法, ...
- LINQ Distinct()
using System; using System.Collections.Generic; using System.Linq; namespace LinqTest { class Progra ...
- 【Linux init】systemd 服务单元管理
系统服务管理systemd Control the systemd system and service manager 控制systemd系统和服务管理,并行启动服务时充分发挥了多核处理器的性能, ...
- 【Spring 核心】装配bean(三)XML配置
项目包结构: src/main/java com.bonc.pojo--|-CompactDisc.java (接口) |-SgtPeppers.java (实现类 实现 CompactDis ...
- 数字图像处理界标准图像 Lena 后面的故事
熟悉图像处理或者压缩的工程师.研究人员和学生,经常在他们的实验或者项目任务里使用"Lenna"或者"Lena"的图像.Lenna 图像已经成为被广泛使用的测试图 ...