1:本周学习总结

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

2:书面作业

2.1.:常用异常--结合题集题目7-1回答

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

会出现两种两种异常:

  • 语法错误:可以根据编译器的提示进行修改;
  • 运行时出错,常见的有IllegalArgumentException,NullPointerException,IndexOutOfBoundsException。 不需要捕获。

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

对RuntimeException 及其子类不要求捕捉,而其它的异常要求捕捉。

RuntimeException 子异常,有:数组越界异常、空指针异常、0作除数异常。

非RuntimeException 异常有:Socket异常、IO异常等。

2.2.:处理异常使你的程序更加健壮--题集题目7-2

2.2.1: 实验总结。并回答:怎么样才能让你的程序更加健壮?

总结:本题如果输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。所以在for循环中进行try-catch捕获异常时,如果捕获了异常,需要在catch语块中进行i--,否则会出错的。

在有效使用异常的情况下,异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。有三个原则可以帮助你在调试过程中最大限度地使用好异常,这三个原则是:

  • 具体明确:通过使用多个catch块来给用户提供捕获到异常的明确信息。
  • 提早抛出:通过在检测到错误时立刻抛出异常来实现迅速失败,可以有效避免不必要的对象构造或资源占用
  • 延迟捕获:在程序有能力处理异常之前就捕获它,通常会导致更严重的错误和其他异常.

    就能让你的异常协助你跟踪和消灭缺陷,使你的程序更加健壮,对用户更加友好。

2.3: throw与throws--题集题目7-3--阅读Integer.parsetInt源代码

2.3.1:Integer.parsetInt一开始就有大量的抛出异常的代码,这种做法有什么好处?



在用Integer.parseIn()时会出现null或是小数,那样就会发出异常java.lang.NumberFormatException: For input string。可避免传入错误的参数。

2.3.2:结合自己编写的程序与3.1,分析自己编写的方法抛出异常时一般需要传递给调用者一些什么信息?

本题当begin >= end,begin > 0或end > arr.length时,抛出IllegalArgumentException异常,并且打印说明异常的原因。

if(begin>=end) {
throw new IllegalArgumentException("begin:"+begin+" >= end:"+end); }
if(begin<0){
throw new IllegalArgumentException("begin:"+begin+" < 0");
}
if(end>arr.length){
throw new IllegalArgumentException("end:"+end+" > arr.length");
}

要传递给调用者异常原因。

2.4:用异常改进ArrayIntegerStack--题集题目6-3

2.4.1: 结合6-3代码,回答使用抛出异常的方式代表程序运行时出错有什么好处?比单纯的返回错误值,有何优点?

对一个成员方法,执行成功的情况容易理解,如果执行失败用抛出异常的方法比返回错误值更能直接体现失败原因。

2.4.2:如果一个方法内部的内码抛出的是RuntimeException类型的异常,那么方法声明是否应该使用throws关键字,如果使用throws关键字声明该方法抛出的异常,能给我们带来什么好处吗?

没有要求一定要使用throws关键字,声明了throws关键字可以提示异常并重新执行程序,以免用户使用时发生错误后程序停止运行。使用了throws声明后能自定抛出异常的信息,可以更加详细地告诉使用者发生了什么错误。

2.5:函数题-多种异常的捕获--题集题目6-1

2.5.1: 结合6-1代码,回答:一个try块中如果可能抛出多种异常,且异常之间可能有继承关系,捕获时需要注意些什么?

如果多种异常处理相同,可以使用catch(Exception e); 如果不同,则子类在父类前面。比如本题出现的NumberFormatException、IllegalArgumentException和Exception三种异常。NumberFormatException是IllegalArgumentException的子类,IllegalArgumentException是Exception的子类,所以要按照NumberFormatException、IllegalArgumentException、Exception的顺序编写catch块。

2.5.2:一个try块中如果可能抛出多种异常,使用Java8的多重异常捕获语法需要注意些什么?

注意多种异常之间的继承关系,应该先捕获子类再捕获父类。

2.6:为如下代码加上异常处理

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));//打印数组内容

2.6.1: 改正代码,让其可正常运行。注1:里面有多个方法均可能抛出异常。注2:要使用finally关闭资源。


byte[] content = null;
FileInputStream fis =null;
int bytesAvailabe;
try {
//FileInputStream fis =null;
fis = new FileInputStream("testfis.txt");
bytesAvailabe = fis.available();//获得该文件可用的字节数
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
fis.read(content);//将文件内容读入数组
} }
catch(FileNotFoundException e) {
System.out.println(e);
} catch(IOException e){
System.out.println(e);
}
finally {
try {
if(fis!=null)
fis.close();
} catch (FileNotFoundException e) {
System.out.println(e);
}
System.out.println(Arrays.toString(content));//打印数组内容
}

2.6.2:使用Java7中的try-with-resources来改写上述代码实现自动关闭资源。简述这种方法有何好处?

public static void main(String[] args) throws Exception {

	byte[] content = null;
FileInputStream fis =null;
int bytesAvailabe;
try {
//FileInputStream fis =null;
fis = new FileInputStream("testfis.txt");
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));//打印数组内容
} }

2.7:面向对象设计作业-图书馆管理系统(分组完成,每组不超过3个同学)--登录lib.jmu.edu.cn,对图书进行搜索。然后登录图书馆信息系统,查看我的图书馆。如果让你实现一个图书借阅系统,尝试使用面向对象建模。

组员:罗佳 林俊伟 王彩云

2.7.1:该系统的使用者有谁?

使用者分为两种:学生(借书的人) 图书馆管理员。

2.7.2:主要功能模块(不要太多)及每个模块的负责人。下周每个人要提交自己负责的模块代码及运行视频。

功能模块:登录模块 图书信息管理系统 图书借阅模块 图书归还模块 图书查询模块

2.7.3: 该系统的主要的类设计及类图(可用)

2.7.4:你准备如何存储图书信息、解决信息、读者信息等。

目前的想法是用文件来储存,但是具体的实现还没想过。

3:码云及PTA

3.1: 码云代码提交记录

3.2:截图PTA题集完成情况图

3.3:统计本周完成的代码量

周次 总代码量 新增加代码量 总文件夹 新增加文件夹
1 114 114 11 11
2 520 406 16 6
3 1089 569 22 6
5 1425 336 29 7
6 1819 394 31 2
7 2987 1168 54 23
8 5437 2450 79 25
9 5695 258 84 5
10 6680 985 102 18
11 6935 255 111 9

学号:201621123032 《Java程序设计》第10周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 2018面向对象程序设计(Java)第10周学习指导及要求

    2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4)  学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...

  3. 面向对象程序设计(JAVA) 第10周学习指导及要求

    2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4)   学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...

  4. 学号20145303 《Java程序设计》第一周学习总结

    学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...

  5. 学号20145322 《Java程序设计》第一周学习总结

    学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...

  6. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  7. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  9. 2018-2019-3《Java程序设计》第二周学习总结

    学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...

  10. # 20175329 2018-2019-2 《Java程序设计》 第二周学习总结

    学号 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨论一下JAVA与 ...

随机推荐

  1. 动态链接库(DLL)

    DLL 的类型 当您在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数.这两种链接方法是加载时动态链接和运行时动态链接. 加载时动态链接 在加载时动态链接中,应用程序像调用本 ...

  2. Redis入门必读,The Little Redis Book中文版

    csdn的博客都要搬到这里了 The Little Redis Book中文版 入门 The Little Redis Book中文版 第一章 - 基础知识 The Little Redis Book ...

  3. 【HNOI2004】敲砖块(动态规划)

    越来越懒了,不想粘题目 题解 样例的输入是个很好的提醒, 把他往左边对齐之后 如果要打掉某个位置,那么必须要打掉右上方的所有砖 然后就很明显的一个DP了.... #include<iostrea ...

  4. MPTCP iperf 发包方式

    之前用的发包方式是发送大文件,用NC监测. 今天改了另外一种发包方式iperf,简单记录下. iperf发包,具体方法: 1.在终端中运行拓扑脚本: 运行py脚本:sudo python topy.p ...

  5. 8Manage:数据安全,企业新时代的护航利器

    数据安全,是个老生常谈的话题,但是安全往往是在危险的时候方能体现出来,因此,这也是很容易被人们所忽略的部分.2017年,数据安全事件更是屡屡登上头条,除了个人信息的数据泄露之外,还有网络病毒造成的全球 ...

  6. RedHat 7.3 更新yum源

    title: RedHat 7.3 更新yum源 time: 2018.3.15 查看所有yum包 [root@bogon ~]# rpm -qa | grep yum yum-rhn-plugin- ...

  7. windows下的react-native 开发环境搭建

    本教程用安卓手机作为演示. 首先安装jdk.本教程基于jdk1.8,安装时有一点要特别注意:jdk和jre必须装到不同目录下,否则初始化react-native项目时大概率报tools.jar not ...

  8. python函数学习(一)

    1.parse_known_args()和parse_args()函数 该函数为命令行解析函数,调用时需要import argparse(命令行选项.参数和子命令的解析器). 以下内容摘自python ...

  9. WordPress添加个性化的博客宠物的方法

    在很多的网站上都看见过这种效果,于是自己也想试试.看见我网站上的小宠物了吗,就是这种效果. 不多说,方法如下: 工具: 下载地址:http://yunpan.cn/cFUmZB8WWthty 访问密码 ...

  10. VMware Workstation 学习笔记

    1. 什么是虚拟机:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.可以运行在一个完全隔离环境中的完整计算机系统. 2. 虚拟机的用途:测试软件.搭建某种特定需求的环境 ...