1. 本周学习总结

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

2. 书面作业

本次PTA作业题集异常

1.常用异常

题目5-1

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

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

有些异常,像RuntimeException在程序中是完全可以避免的,比如数组的越界,只要在程序做个判断,如果访问的数组元素下标和数组的长度作一下比较就知道会不会越界了。该异常由系统检测,属于Unchecked Exception,故无需使用try catch进行异常捕获。所以我们在写代码时需要用到if语句判断是否为空,来避免出现NullPointerException;

1.3 什么样的异常要求用户一定要使用捕获处理??
之前提到的凡是直接继承自Exception的异常都需要捕获处理。

Q2.处理异常使你的程序更加健壮
题目5-2
2.1 截图你的提交结果(出现学号)

2.2 实验总结

Answer:
题目2要求使用异常机制处理异常输入,其实较题目1来说还是相对比较简单的。首先实例化一个数组,然后循环输入数据,用try-catch来实现当输入的是非整型字符串提示异常。

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

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

import java.util.Arrays;
import java.util.Scanner;

class ArrayUtils{
public static double findMax(double[] arr,int begin, int end) throws 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");
}
double max= arr[begin+1];
for(int i=begin+1;i<end;i++){

if(arr[begin+1]<arr[i]){
double t=arr[begin+1];
arr[begin+1]=arr[i];
arr[i]=t;
max=arr[begin+1];
}


}
return max;
}


}

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
double[] arr=new double[n];

for(int i=0;i<arr.length;i++){
double s=sc.nextDouble();
arr[i]=s;
}
while(sc.hasNextInt()){
int begin=sc.nextInt();
int end=sc.nextInt();
try{
System.out.println(ArrayUtils.findMax(arr,begin,end));
}catch(Exception e){
System.out.println(e);
}

}
sc.close();
try {
System.out.println(ArrayUtils.class.getDeclaredMethod("findMax", double[].class,int.class,int.class));
} catch (Exception e1) {
}
}

}

从Integer.parseInt()源代码中,可以看出根据不同的情况都会抛出异常,可以根据不同情况抛出具体的异常信息,以便调用者了解异常原因。在pta5-3中,对[begin,end]范围内比大小,就需要对begin,end的取值作处理,以防出现异常,对不同的异常打印出不同的异常信息可以让调用者了解是出现begin>=end,begin<0,还是end>arr.length异常。

4.函数题

题目4-1(多种异常的捕获)

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

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

答:当抛出多种异常时,在写catch时要注意将子类异常写在父类异常前面。若父类异常在前面。则不执行子类异常的捕获,编译会出现错误。例如:

catch(NumberFormatException e1){

System.out.println(e1);//执行,若捕获到,则输出NumberFormatException;

}

catch(IllegalArgumentException e2){

System.out.println(e2);//执行,若捕获到,则输出IllegalArgumentException;

}

catch(Exception e3){

System.out.println(e3);//执行,若捕获到,则输出Exception;

}

当改变三种异常的顺序时:

catch(Exception e3){

System.out.println(e3);//执行,若捕获到,则输出Exception;

}

catch(NumberFormatException e1){

System.out.println(e1);//不执行;

}

catch(IllegalArgumentException e2){

System.out.println(e2);//不执行;

}

出现编译错误。

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关闭资源。

Ans:
题目所给代码无法正常运行,也就是说会报错,那么想要它正常运行,就需要弄清楚错在哪,因此我们直接复制粘贴题目所给代码,得到如下报错:

报错显示异常FileNotFoundException和IOException没有得到处理。
使用JDK文档对FileNotFoundException和IOException类进行了查询,惊奇的发现:

FileNotFoundException类是IOException类的子类,那么就是说在Main函数中throws IOException,即可抛出没有得到处理的所有异常。
因此,对程序做throws处理,得到

将代码放到Eclipse中会提示两种解决方案一种是直接throw一个IOException,另一种是tyr catch可能会出错的代码;这里我只写第一种了,关闭资源我就直接file.close

Q6.重点考核:使用异常改进你的购物车系统
举至少两个例子说明你是如何使用异常处理机制让你的程序变得更健壮。
说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)

3. 码云上代码提交记录

题目集:异常

学号:201521123116 《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. Matlab学习笔记(2)

    1. 在MATLAB中默认最开始出现的是命令窗口,也就是Command Window.对应的文件保存后扩展名一般都 是.mat 真正的程序代码编辑窗口应该新建New Script或者其他的.此时保存的 ...

  2. uploadify 在chrome上崩溃的解决办法

    使用Uploadify进行文件上传,Chrome经常会报“喔唷,崩溃啦”的错误,见下图: 很显然,这是Chrome浏览器缓存功能,所导致的问题.从LOG里也能看到:正常的情况下,会请求文件(jquer ...

  3. JQuery中的回调对象

    JQuery中的回调对象 回调对象(Callbacks object)模块是JQuery中的一个很基础的模块,很多其他的模块(比如Deferred.Ajax等)都依赖于Callbacks模块的实现.本 ...

  4. node.js之模块

    node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...

  5. java源文件中是否必须要有一个public类?

    java源文件中不必有一个public类,如果没有public类的话,那么文件名可以是任意合法名称,且编译完成之后如果该源文件中有多个独立的类,则会生成多个对应的.class文件.

  6. EF vs ADO.NET

    EF有什么缺点,什么时候需要考虑用ADO.NET http://blog.sina.com.cn/s/blog_4aedf6370102wgxl.html

  7. 一个基于JRTPLIB的轻量级RTSP客户端——myRTSPClient详解

    myRTSPClient是一个轻量级的RTSP客户端C++函数库. 支持多平台,支持H264,H265,MPA等音视频传输. 免费开源,接口易用,配套教程与代码解析(本博客). 适合RTSP入门学习. ...

  8. ubuntu下发布asp.net core并用nginx代理之旅(续)

    前面实现了ubuntu下的发布,然而实际项目一般为visual studio中发布文件系统,然后上传至生产环境中,(部分参考:上传文件到linux - ubuntu) 这节就发布到生产环境中的: 1. ...

  9. Hibernate——hibernate的配置测试

    Hibernate Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自 ...

  10. php Yii2 报错unexpected '}'

    报错unexpected '}'一般是缺少":"导致的