201521123024 《Java程序设计》 第九周学习总结
2017-04-21 21:41
225 查看
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。
2. 书面作业
本次PTA作业题集异常
1.常用异常
题目5-11.1 截图你的提交结果(出现学号)
1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?
自己以前编写的代码经常出现异常就是数组越界,无需使用try-catch进行捕获处理,我们编写代码时应避免下标越界。1.3 什么样的异常要求用户一定要使用捕获处理?
除了Error与RuntimeException以外的异常要求用户一定要用try-catch来捕获异常。2.处理异常使你的程序更加健壮
题目5-22.1 截图你的提交结果(出现学号)
2.2 实验总结
我们在程序可能出错的地方加上try-catch来捕获异常可以有效防止我们的程序出错并能及时发现原因。3.throw与throws
题目5-33.1 截图你的提交结果(出现学号)
3.2 阅读Integer.parsetInt源代码,结合3.1说说抛出异常时需要传递给调用者一些什么信息?
Integer.parsetInt源代码: public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10); } public static int parseInt(String s, int radix) throws NumberFormatException { /* * WARNING: This method may be invoked early during VM initialization * before IntegerCache is initialized. Care must be taken to not use * the valueOf method. */ if (s == null) { throw new NumberFormatException("null"); } if (radix < Character.MIN_RADIX) { throw new NumberFormatException("radix " + radix + " less than Character.MIN_RADIX"); } if (radix > Character.MAX_RADIX) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); } int result = 0; boolean negative = false; int i = 0, len = s.length(); int limit = -Integer.MAX_VALUE; int multmin; int digit; if (len > 0) { char firstChar = s.charAt(0); if (firstChar < '0') { // Possible leading "+" or "-" if (firstChar == '-') { negative = true; limit = Integer.MIN_VALUE; } else if (firstChar != '+') throw NumberFormatException.forInputString(s); if (len == 1) // Cannot have lone "+" or "-" throw NumberFormatException.forInputString(s); i++; } multmin = limit / radix; while (i < len) { // Accumulating negatively avoids surprises near MAX_VALUE digit = Character.digit(s.charAt(i++),radix); if (digit < 0) { throw NumberFormatException.forInputString(s); } if (result < multmin) { throw NumberFormatException.forInputString(s); } result *= radix; if (result < limit + digit) { throw NumberFormatException.forInputString(s); } result -= digit; } } else { throw NumberFormatException.forInputString(s); } return negative ? result : -result; }
抛出异常时,需要传递给调用者错误发生的原因。
4.函数题
题目4-1(多种异常的捕获)4.1 截图你的提交结果(出现学号)
4.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?
有时候一个方法会抛出多种异常来指示不同类型的问题。如果这些都是受检异常,必须都列在方法的throws子句中,它们之间以逗号分开。
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关闭资源。
try{
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));//打印数组内容
}
catch(FileNotFoundException e){
System.out.println(e);
}
catch(IOException e){
System.out.println(e);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(e);
}
finally
{
if(fis!=null)
try{
fis.close();
}
catch(Exception e){System.out.println(e);}
}
5.2 使用Java7中的try-with-resources来改写上述代码实现自动关闭资源.
这题没学过,百度了一下还是不大理解,只能先放着了。- -相关文章推荐
- 20145236 《Java程序设计》第九周学习总结
- 《Java程序设计》第九周学习总结
- 20145109 《Java程序设计》第九周学习总结
- 20155302 2016-2017-2 《Java程序设计》第九周学习总结
- 20145234黄斐《Java程序设计》第九周学习总结
- 20145302张薇《Java程序设计》第九周学习总结
- 20145240 《Java程序设计》第九周学习总结
- 《JAVA程序设计》第九周学习总结
- 20145110 《Java程序设计》第九周学习总结
- 20145213《Java程序设计》第九周学习总结
- 201521123024《Java程序设计》第8周学习总结
- 20145311 《Java程序设计》第九周学习总结
- 20145221 《Java程序设计》第九周学习总结
- 20145122《Java程序设计》第九周学习总结
- 20145315 《Java程序设计》第九周学习总结
- 20145327 《Java程序设计》第九周学习总结
- 20145237 《Java程序设计》第九周学习总结
- 20145201《Java程序设计》第九周学习总结
- 201521123024 《Java程序设计》第6周学习总结
- 20145202马超 《Java程序设计》第九周学习总结