201521123069 《Java程序设计》 第9周学习总结
1. 本章学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。
(1)使用try...catch语句捕获异常(try块后可跟一个或多个catch块,注意子类异常要放在父类异常前面,否则子类异常永远不会被执行到,编译器也会报错)
(2)java异常继承结构:Error(严重错误,如JRE内部错误,资源耗尽等,属于Unchecked Exception(无需捕获);Exception: RuntimeException(该类异常由系统检测,用户无需try...catch,属于Unchecked Exception)、其他Exception(该类异常受编译器检查,需要用户使用try...catch对异常进行处理,属于Checked Exception)
(3)常见异常:ArrayIndexOutOfBoundsException(数组下标越界异常)、NullPointerException(空指针异常)、ClassCastException(强制转换异常)、FileNotFoundException (文件不存在异常)、IllegalArgumentException(非法参数异常)
(4)finally语句:无论如何都会被执行到的语句,经常使用finally来释放资源。
(5)throws与throw:使用throws关键字声明方法中可能会出现的异常,而throw语句用来抛出异常
2. 书面作业
本次PTA作业题集异常
Q1. 常用异常
题目5-1
1.1 截图你的提交结果(出现学号)
1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?
1.3 什么样的异常要求用户一定要使用捕获处理?
1.1

1.2
答:以前编写的代码中经常出现ArrayIndexOutOfBoundsException,NullPointerException,ClassCastException,IllegalArgumentException等异常,不需要捕获,因为它们都是运行时异常,运行时异常无需捕获。出现运行时异常一般来说是由于编码失误如误用API,我们应该尽量改进代码避免出现此类错误。
1.3
答:除了RuntimeException及其子类以外,其他的Exception类及其子类异常要求用户一定要使用捕获处理。
Q2.处理异常使你的程序更加健壮
题目5-2
2.1 截图你的提交结果(出现学号)
2.2 实验总结
2.1

2.2
实验总结:将字符串转换成有符号的十进制整数,由于字符串可能为非整型字符串,所以可能出现NumberFormatException ,所以要对该异常进行捕获,捕获的同时要求用户重新输入,我们可以将计数器进行自减操作即可实现。
Q3.throw与throws
题目5-3
3.1 截图你的提交结果(出现学号)
3.2 阅读Integer.parsetInt源代码,结合3.1说说抛出异常时需要传递给调用者一些什么信息?
3.1

3.2



答:将字符串参数作为有符号的十进制整数进行解析,parseInt方法只抛出NumberFormatException这种异常,抛出异常时传递给调用者错误发生的原因。如:(1)字符串参数指向为null(2)进制数小于最小进制数2(3)进制数大于最大进制数36(4)字符串的第一个字符不是数字,也不是正负号(5)字符串为正号或负号(6)字符串为""
**Q4.函数题
题目4-1(多种异常的捕获)
4.1 截图你的提交结果(出现学号)
4.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么? **
4.1

4.2
答:一个try块中如果可能抛出多种异常,捕获时注意子类异常要放在父类异常前面。
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关闭资源。
5.2 使用Java7中的try-with-resources来改写上述代码实现自动关闭资源.
5.1
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);//将文件内容读入数组
}
System.out.println(Arrays.toString(content));//打印数组内容
}
catch(IOException e){
System.out.println(e);
}
finally{
if(fis!=null){
fis.close();
}
}
}
5.2
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);//将文件内容读入数组
}
System.out.println(Arrays.toString(content));//打印数组内容
}
catch(IOException e){
System.out.println(e);
}
}
**Q6.重点考核:使用异常改进你的购物车系统(未提交,得分不超过6分)
举至少两个例子说明你是如何使用异常处理机制让你的程序变得更健壮。
说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)
**
(1)从文件中读取商品信息时可能会碰到文件不存在的情况,此时若不对该异常进行捕获,程序就会崩溃。
public static void main(String[] args)throws FileNotFoundException {
Scanner scanner=null;
ArrayList<Stuff>stuff=new ArrayList<Stuff>();
try{
scanner=new Scanner(new FileInputStream("D:\\list.txt"));
while(scanner.hasNextLine()){
String str=scanner.nextLine();
String []str1=str.split(" ");
stuff.add(new Stuff(str1[0],Integer.parseInt(str1[1]),str1[2],Integer.parseInt(str1[3]),str1[4]));
}
}
catch(FileNotFoundException e){
System.out.println(e);
}
finally{
if(scanner!=null)
scanner.close();
}
}
(2)当商品的数量为0时无法将其添加至购物车,抛出异常(自定义异常)
class CannotbeAddToCartException extends Exception {
public CannotbeAddToCartException(String str){
super(str);
}
}
public void add(Stuff e) throws Exception{
if(e.Num==0){
throw new CannotbeAddToCartException("商品库存不足无法添加至购物车");
}
}
public static void main(String[] args)throws Exception {
System.out.print("请输入商品名:");
String str = s.next();
try{
sh.add(Stuff.search(str, stuff));
}
catch(Exception e){
System.out.println(e);
}
}
3. 码云上代码提交记录
题目集:异常
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

201521123069 《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 ...
随机推荐
- 【.Net Core 2.0 生态】-- 好文收藏
随笔分类 - .NET Core - dotNet实训营 .Net Core 2.0 生态(1).NET Standard 2.0 特性介绍和使用指南 .Net Core 2.0 生态(2).NET ...
- CentOS 7 服务器配置--安装CentOS 7
看博客园也有几年的时间了,这是第一次鼓足勇气发一下我自己的博客,不为了别的,只是最近打算学习Linux的服务器配置,就写几篇博文把我学的一点点的记录下来,方便以后自己回顾学习. 今天就先记录下我安装C ...
- 运维之Linux基础(二)
运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...
- asp.net core MVC 过滤器之ActionFilter过滤器(二)
本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter过滤器(一) asp.net core ...
- ffmpeg音频播放代码示例-avcodec_decode_audio4
一.概述 最近在学习ffmpeg解码的内容,参考了官方的教程http://dranger.com/ffmpeg/tutorial03.html,结果发现这个音频解码的教程有点问题.参考了各种博客,并同 ...
- css的定位和浮动
定位 浮动 float代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 一篇文章学会springMVC(转)
说在前面 本文只是入门 为什么用springMVC?springMVC有什么有缺点?springMVC和Struts有什么区别?等等这些问题可以参考网路上资源,本文的重点是快速带入,让大家了解熟悉sp ...
- 8.23.2 IO-输入输出规范代码
文件路径4种写法: 相对路径,相对当前而言,在当前路径下找: String filePath = "temp01"; 绝对路径: String filePath = " ...
- Spring(一)--作用、IOC容器细节、搭配环境、Spring实验
1.Spring作用: 1.生态体系庞大,全能型选手![springmvc是其一个子模块,jdbcTemplate能直接操作数据库!] 2.将其他组件粘合在一起 比如将S ...
- 更改pip源至国内镜像,显著提升下载速度
经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的 ...