201621123005《Java程序设计》第十周学习总结


  1. 本周学习总结

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

  1. 书面作业

1. 常用异常

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

经常出现ArrayIndexOutOfBoundsException异常和NullPointerException异常和NumberFormatException

它们都不需要捕获,属于Unchecked Exception 我们可以在编写时注意是否为空指针、是否数组越界。

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

答:Checked Exception类型的异常需要捕获处理。

2. 处理异常使你的程序更加健壮

题集题目7-2

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

这道题要求当输入非整型字符串时输出异常信息,所以对输入进捕获,

for (int i = 0; i < arr.length;i++) {
try{
String line = sc.nextLine();
int value = Integer.parseInt(line); arr[i] = value;
}catch(Exception e){
System.out.println(e);
i--;
}
}

使用try-catch可以使程序更加健壮。

3. throw与throws

题集题目7-3

阅读Integer.parsetInt源代码

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

根据源代码,大量的抛出异常的代码,我们可以知道产生异常的原因

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

程序3.1的编写在抛出异常时让调用者得到了自己输入错误的原因。

4. 用异常改进ArrayIntegerStack

题集题目6-3

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

能够知道错误的地方,提示出出错的信息,而单纯返回错误值却并不知道错误在哪。

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

当使用throws关键字时,我们可以不使用try-catch捕获,而直接终止程序。

5. 函数题-多种异常的捕获

题集题目6-1

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

捕获时注意子类在前,父类在后。

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

需要注意捕获时子类在父类的前面。

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

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

public class Main6 {

    public static void main(String[] args) {
// TODO Auto-generated method stub
byte[] content = null;
FileInputStream fis = null;
try {
fis = new FileInputStream("testfis.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int bytesAvailabe = 0;
try {
bytesAvailabe = fis.available();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//获得该文件可用的字节数
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
try {
fis.read(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//将文件内容读入数组
finally{
try{
fis.close();
}catch(Exception e){
System.out.println(e);
System.out.println(Arrays.toString(content));//打印数组内容
} }
}
}
}

6.2 结合题集6-2代码,要将什么样操作放在finally块?为什么?使用finally关闭资源需要注意一些什么?

finally块是无论是否捕获都需要被执行的,如关闭文件资源,需要注意在finally内部使用try-catch来 捕获它的异常

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

try (FileInputStream fis =  new FileInputStream("testfis.txt")) {
fis = new FileInputStream("testfis.txt");
bytesAvailabe = fis.available();
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];
fis.read(content);
} catch (Exception e) {
e.printStackTrace();
}

好处是try-with-resources可以使每个打开的资源都关闭,代码更简洁。

7. 面向对象设计作业-图书馆管理系统(分组完成,每组不超过3个同学)

7.1 该系统的使用者有谁?

学生、教职工、管理员

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

学生、教职工:登录、挂失、查询书、查看借阅信息、借书、还书、退出

管理员:查询、添加、删除

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

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

用文件来存储图书信息

3.码云及PTA

题目集:异常

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图



3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
2 381 381 12 5
3 661 280 19 7
4 974 313 24 5
5 1358 384 33 9
6 2211 853 37 4
7 3223 412 42 5
8 3635 423 46 4
9 3867 232 51 5

201621123005《Java程序设计》第十次实验总结的更多相关文章

  1. 20145330《Java程序设计》第一次实验报告

    20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...

  2. 20145320《Java程序设计》第一次实验报告

    20145320<Java程序设计>第一次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 18: ...

  3. 20145317彭垚 《Java程序设计》第一次实验实验报告

    20145317彭垚 <Java程序设计>第一次实验实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的 ...

  4. 《Java程序设计》课程实验要求

    目录 <Java程序设计>课程实验要求 注册实验楼账号 实验一 Java开发环境的熟悉 实验二<Java面向对象程序设计> 实验三 <敏捷开发与XP实践> 实验四 ...

  5. 20145127《java程序设计》第一次实验

    <java程序设计>第一次实验 实验内容及其步骤 1.使用JDK编写简单的Java小程序: Java编译的方法有很多,最基础最简单的就是使用命令行,记事本,Java虚拟机直接进行编译,下面 ...

  6. #《JAVA程序设计》 20155214 实验五 网络编程与安全

    <JAVA程序设计> 20155214 实验五 网络编程与安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验要求 要求一 结对实现中缀表达式转后缀 ...

  7. 《JAVA程序设计》 20155208 实验四 Android程序设计

    <JAVA程序设计> 20155208 实验四 Android程序设计 实验一: 实验要求: Android Stuidio的安装测试: 参考<Java和Android开发学习指南( ...

  8. 20155339《java程序设计》第一次实验报告

    20155339<java程序设计>第一次实验报告 实验一 java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序: 2.使用IDEA编辑.编译.运行.调试java程 ...

  9. 20144303 《Java程序设计》第一次实验实验报告

    20144303 <Java程序设计>第一次实验实验报告 北京电子科技学院(besti)实验报告 课程:java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 ...

  10. 20145240 《Java程序设计》第一次实验报告

    20145240 <Java程序设计>第一次实验报告 实验内容 一.命令行下java程序开发 1.建立Code目录,输入mkdir 20145240命令建立实验目录,并使用dir命令查看目 ...

随机推荐

  1. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  2. Python学习开发资源大全列表

    1 机器学习和计算机视觉 Crab:灵活.快速的推荐引擎 gensim:人性化的话题建模库 hebel:GPU 加速的深度学习库 NuPIC:智能计算 Numenta 平台 pattern:Pytho ...

  3. Yarn框架和工作流程研究

    一.概述     将公司集群升级到Yarn已经有一段时间,自己也对Yarn也研究了一段时间,现在开始记录一下自己在研究Yarn过程中的一些笔记.这篇blog主要主要从大体上说说Yarn的基本架构以及其 ...

  4. 运行javac 报告javac不是内部或外部命令,但是运行java、java-version正常

    以前装jdk 从来没遇到过今天这种情况,各种解决办法试了一下午,终于出来了,说一下解决的办法: JAVA_HOME .classpath 都在系统变量中建立好: java_home 添加jdk的安装目 ...

  5. org.apache.ibatis.exceptions.TooManyResultsException的异常排查过程

    在查阅测试环境业务日志中的ERROR级别的日志时,发现了有一个Mybatis相关的异常错误org.apache.ibatis.exceptions.TooManyResultsException: E ...

  6. Ubuntu vim java 自动补全javacomeplete2

    一 安装vundle $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 默认安装在/.v ...

  7. nats

    NATS is a family of open source products that are tightly integrated but can be deployed independent ...

  8. JavaScript高级内容笔记:原型链、继承、执行上下文、作用域链、闭包

    最近在系统的学习JS深层次内容,并稍微整理了一下,作为备忘和后期复习,这里分享给大家,希望对大家有所帮助.如有错误请留言指正,tks. 了解这些问题,我先一步步来看,先从稍微浅显内容说起,然后引出这些 ...

  9. HCNP学习笔记之史上最全华为路由器交换机配置命令大合集

    先来一张思科和华为命令的对照表: 史上最全华为路由器交换机配置命令大合集,熟练掌握下面的华为路由器交换机配置知识点,你只需花几分钟的时间就能明白华为路由器交换机配置.交换机的配置命令等等. 华为路由器 ...

  10. 20145315 《Java程序设计》第七周学习总结

    20145315 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 13.1.1时间的度量 1.格林威治时间(GMT):参考太阳到达最高点,有时间误差. 2.世界 ...