第九周-异常


1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。

此处仅部分知识点归纳

2. 书面作业

1. 常用异常,题目5-1

1.1 截图你的提交结果(出现学号)

1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?

在以前编写的代码中,常出现的异常多为数组越界,主要也是代码比较复杂,用着用着就混乱了。需要捕获,这种错误一般来说很难注意得到,就算中途出现错误了也不容易想到错误产生的原因,这种时候就需要捕获来为我们揪出错误了。避免异常的话,首先是要建立在代码不出错的前提下,在输入的时候也不要超出输入要求,然后代码段内使用捕获异常的手段强化代码,如:try-catch语法之类的。

1.3 什么样的异常要求用户一定要使用捕获处理?

错误的类型转换、数组访问越界、访问空指针等这种平时常见的编码失误。

2. 处理异常使你的程序更加健壮,题目5-2

2.1 截图你的提交结果(出现学号)

2.2 实验总结

这个实验出现的异常主要是“NumberFormatException”,就是输入的数字格式异常,字符转换出错。在捕捉异常的时候要先看看自己的代码可能会出现的异常,然后对症下药。

3. throw与throws,题目5-3

3.1 截图你的提交结果(出现学号)

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

产生错误时会生成一个代表该错误的异常对象,其中包含出错的详细信息,一般包括出错代码的位置,出错的详细原因,就好比实验题中的“java.lang.IllegalArgumentException: begin:3 >= end:2”,这就是出错的详细原因,这就让调用者可以有效地发现错误并处理。

4. 函数题,题目4-1(多种异常的捕获)

4.1 截图你的提交结果(出现学号)

4.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?

首先,捕获使用catch语句,而一个catch中可以捕获多重异常,称为catch块,但块中的异常不得有继承关系。其次,可以每个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");
int bytesAvailabe = fis.available();
if(bytesAvailabe > 0){
content = new byte[bytesAvailabe];
fis.read(content);
}
} catch (Exception e) {
System.out.println(e);
} finally {
if(fis != null){
try {
fis.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println(Arrays.toString(content));//打印数组内容

5.2 如何使用Java7中的try-with-resources来改写上述代码实现自动关闭资源?

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 (Exception e) {
System.out.println(e);
}
System.out.println(Arrays.toString(content));

6. 重点考核:使用异常改进你的购物车系统,举至少两个例子说明你是如何使用异常机制让你的程序变得更健壮。说明要包含2个部分:

1. 问题说明(哪里会碰到异常)。

因为系统还是比较简单的,所以会出现异常的地方也不多。主要是输入,在选择功能,商品数量增减等,这都是对输入有要求的,选择功能,修改商品数量时只能按要求输入,其余的输入都不行,否则为异常。

2. 解决方案(关键代码)

此处仅提供小部分代码以作示例

3. 码云上代码提交记录

3.1 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

201521123071 《JAVA程序设计》第九周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第九周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...

  2. 20145220java程序设计第九周学习总结

    20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...

  3. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  4. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  5. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 马凯军201771010116《面向对象与程序设计Java》第九周学习总结

    一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3 ...

  9. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  10. 《Java》第九周学习总结

    下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新

随机推荐

  1. Python3 知识库

    Python3 标准库概览 Python3 日期和时间 Python3 JSON 数据解析 Python3 XML解析 Python3 多线程 Python3 SMTP发送邮件 Python3 网络编 ...

  2. js的call,apply,bind的使用与区别

    在原生js中会有三个很常见的函数,call,apply,bind 他们的作用就是改变当前函数的this指针, 但是细微来说他们还是有不同的. 1)call,apply都是执行某一函数,发现this有变 ...

  3. 【Linux笔记(000) 】-- 系统启动过程

    一.   启动流程 BIOS --> MBR(Boot Code) --> 引导程序(GRUB) --> 加载内核 --> 执行Init --> runlevel 二.  ...

  4. MySQL GROUP BY多个字段分组用法详解

    mysql语句中group by 很容易理解 是分组查询.比如 select sum(score) from user group by name 意思是查询每个人的分数总和但是, select su ...

  5. python之路第二天 随便记记 今天主要很郁闷

    为何要有操作系统 为了让程序员更轻松的完成命令电脑工作而存在的,控制硬件,服务于软件. 操作系统的位置 操作系统位于软件和硬件之间.操作系统由内核(运行于内核态,控制硬件)和系统调用(运行于用户态,为 ...

  6. 汉化Eclipse

    汉化Eclipse.. ----------------- /--------------------------------link连接: 将下载的语言包解压后会有eclipse文件夹,eclips ...

  7. Win7系统默认的壁纸路径

    Win7系统默认的壁纸路径.. ------------------- ------------------- ------------------- ------------------- ---- ...

  8. node.js后台快速搭建在阿里云(二)(pm2和nginx篇)

    前期准备 阿里云服务器 node.js pm2 express nginx linux(推荐教程:鸟哥的私房菜) 简介 嗯……我只是个前端而已 在第一部分说完了express篇. 后面继续项目的部署, ...

  9. 关于C#开发 windows服务进程

    最近在做一个物联网项目,其中有一个模块是需要实现热水工程的自动化补水和回水功能 实现的方式有多种,我选用了VS C#的Windows服务方式. 首先是创建一个windows服务项目(名称随你喜欢的规范 ...

  10. jvm系列 (四) ---强、软、弱、虚引用

    java引用 目录 jvm系列(一):jvm内存区域与溢出 jvm系列(二):垃圾收集器与内存分配策略 jvm系列(三):锁的优化 我的博客目录 为什么将引用分为不同的强度 因为我们需要实现这样一种情 ...