201521145048《java程序与设计》第9周学习总结
2017-04-22 20:46
573 查看
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。2. 书面作业
本次PTA作业题集异常Q1.常用异常
题目5-11.1 截图你的提交结果(出现学号)
1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?
1.3 什么样的异常要求用户一定要使用捕获处理?
1.1
1.2
答:①IllegalArgumentException(非法参数),不需要捕获,因为它是一个uncheckedException,注意需要输入的参数类型。
②ArrayIndexOutOfBoundsException(数组越界),不需要捕获,因为它是一个uncheckedException,在操作数组时注意数组长度。
1.3
答:继承Exception的自定义异常。
Q2.处理异常使你的程序更加健壮
题目5-22.1 截图你的提交结果(出现学号)
2.2 实验总结
2.1
2.2
答:注意异常字符之后的数组序号,可能会出错。
Q3.throw与throw
题目5-33.1 截图你的提交结果(出现学号)
3.2 阅读Integer.parsetInt源代码,结合3.1说说抛出异常时需要传递给调用者一些什么信息?
3.1
3.2
答:5.3运行结果
5.0 java.lang.IllegalArgumentException: begin:3 >= end:3 4.0 java.lang.IllegalArgumentException: begin:3 >= end:2 java.lang.IllegalArgumentException: begin:-1 < 0 java.lang.IllegalArgumentException: end:6 > arr.length public static double ArrayUtils.findMax(double[],int,int) throws java.lang.IllegalArgumentException
从运行结果上看。传递的信息有:异常类型、异常原因、异常位置。
Q4.函数题
题目4-1(多种异常的捕获)3.1 截图你的提交结果(出现学号)
3.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?
3.1
3.2
答:子类异常必须放在父类异常前面
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 Exception { byte[] content = null; FileInputStream fis = null; int bytesAvailabe = 0; try { fis = new FileInputStream("testfis.txt"); bytesAvailabe = fis.available(); if(bytesAvailabe>0){ content = new byte[bytesAvailabe]; fis.read(content); } }catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally{ fis.close(); } System.out.println(Arrays.toString(content)); }
5.2
public static void main(String[] args){ 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 (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } System.out.println(Arrays.toString(content)); }
Q6.重点考核:使用异常改进你的购物车系统(未提交,得分不超过6分)
举至少两个例子说明你是如何使用异常处理机制让你的程序变得更健壮。说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)
问题1、在输入窗口中,用户名或密码输入非法,如空时;
解决:
try{ if (idName.getText().isEmpty() || passWord.isEmpty()) throw new Exception(); }catch(Exception e){ JOptionPane.showMessageDialog(null,"请重新输入用户名或密码!","提示消息",JOptionPane.WARNING_MESSAGE); }
问题2、在搜索输入框,输入商品不存在时.
解决:
try{ Good c=new Good(idName1.getText(),Double.valueOf(idName2.getText())); shopCar.add(c); }catch(Exception e2) { JOptionPane.showMessageDialog(null,"请重新输入物品名称或价格","提示消息",JOptionPane.WARNING_MESSAGE); }
3. 码云上代码提交记录
题目集:异常3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
相关文章推荐
- 201521123118《java程序与设计》第9周学习总结
- 201521123088《java程序与设计》第9周学习总结
- 201521123110《Java程序与设计》第13周学习总结
- 201521123118《java程序与设计》第11周学习总结
- 20155220 2016-2017-2 《java程序设计》第二周学习总结
- 201521123118《java程序与设计》第10周学习总结
- Java-马士兵设计模式学习笔记-总结
- 黑马程序员——Java学习笔记之12——已接触的“设计模式”总结
- java程序性能优化学习总结--第一章java性能调优概述
- Java基础学习总结——Java23种设计模式(Design Patterns)详解
- 20135328-信息安全系统设计基础第五周学习总结(程序的机器级表示)
- Linux内核设计第七周学习总结 Linux内核如何装载和启动一个可执行程序
- java的设计模式,学习心得总结-工厂模式
- java的设计模式,学习心得总结-工厂模式
- Java学习总结记录(1)——Java程序运行机制
- Java 23种设计模式总结,收录学习
- Java设计模式学习总结
- Java学习总结之贪吃蛇项目程序分析
- Java设计模式之工厂方法、抽象工厂模式 程序 总结
- 重新学习Java——Java基本的程序设计结构(一)