第八周作业
20162313 2016-2017-2 《程序设计与数据结构》第8周学习总结
教材学习内容总结
异常处理
不捕获异常
try-catch语句
异常传播
异常类的层次
I/O异常
教材学习中的问题和解决过程
- 问题1:java的异常体系是什么以及各个类的具体描述?
- 问题1解决方案:
Throwable 类是 Java 语言中所有错误或异常的超类(这就是一切皆可抛的东西)。它有两个子类:Error和Exception。
Error:用于指示合理的应用程序不应该试图捕获的严重问题。这种情况是很大的问题,大到你不能处理了,所以听之任之就行了,你不用管它。比如说VirtualMachineError:当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。好吧,就算这个异常的存在了,那么应该何时,如何处理它呢??交给JVM吧,没有比它更专业的了。
Exception:它指出了合理的应用程序想要捕获的条件。Exception又分为两类:一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。《effective java》指出:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。
- 问题2:异常真正出现时能够被修复的概率既然极小,这个处理机制被开发出来究竟为了什么?
- 问题2解决方案:异常的本意是好的,让我们试图修复程序,但是现实中我们修复的几率很小,我们很多时候就是用它来记录出错的信息。如果你厌倦了不停的处理异常,重新抛出异常对你来说可能是一个很好的解脱。原封不动的把这个异常抛给上一级,抛给调用这个方法的人,让他来费脑筋吧。这样看来,java异常(当然指的是受检异常)又给我们平添很多麻烦,尽管它的出发点是好的。
- 问题3:I/O流的类
- 问题3解决方案:java的常用输入、输出流其实都是继承自4个抽象类,分别是
基于单字节的InputStream,OutputStream类(面向字节形式的I/O)
基于双字节的Unicode代码单元的 Reader, Writer类(面向字符形式的I/O)
代码调试中的问题和解决过程
- 问题1:10.2程序的后面提到过integer.parseint的用法?
- 问题1解决方案:Integer.parseInt(String)就是将String字符类型数据转换为Integer整型数据,Integer.parseInt(String)遇到一些不能被转换为整型的字符时,会抛出异常
在360问答中找到这样的回答
返回:
使用指定基数的字符串参数表示的整数。
抛出:
NumberFormatException - 如果 String 不包含可分析的 int。
示例:
parseInt("0", 10) 返回 0
parseInt("473", 10) 返回 473
parseInt("-0", 10) 返回 0
parseInt("-FF", 16) 返回 -255
parseInt("1100110", 2) 返回 102
parseInt("2147483647", 10) 返回 2147483647
parseInt("-2147483648", 10) 返回 -2147483648
parseInt("2147483648", 10) 抛出 NumberFormatException
parseInt("99", 8) 抛出 NumberFormatException
parseInt("Kona", 10) 抛出 NumberFormatException
parseInt("Kona", 27) 返回 411787
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
Let Dog be a subclass of Animal, and suppose Animal has a method called speak() that is overridden in the Dog class. Consider the following code(假设Dog是Animal的子类,且Animal有一个方法speak(),该方法在Dog类中被重载).
Animal spot = new Dog();
spot.speak();
Which of the following is true? (下面哪项是正确的)D
A .
This code will result in a compile-time error. (这段代码会引起编译时错误)
B .
This code will result in a run-time error. (这段代码会引起运行时错误)
C .
The speak method defined in the Animal class will be called. (将会调用Animal类中的speak方法)
D .
The speak method defined in the Dog class will be called. (将会调用Dog类中的speak方法)
E .
The speak method will not be called at all. (不会调用任何speak方法)
Which of the following methods are included with any object that implements the Iterator interface? (下面哪个方法包含了实现Iterator接口的对象?)D
A .
next
B .
hasNext
C .
toString
D .
all of the above(以上都正确)
E .
a and b(a和b)
In order to create a class that implements an interface, the __________________ keyword is used(为了创建一个实现接口的类,需要使用关键字____)C
A .
extends
B .
interfaces
C .
implements
D .
finalizes
E .
abstracts
Consider the following line of code. (思考下行代码)
Comparable s = new String();
Which of the following statements is true about this line? (关于这行代码,下面哪句陈述是正确)C
A .
It will result in a compile-time error(这行代码会引起编译时错误).
B .
It will result in a run-time error(这行代码会引起运行时错误).
C .
It will create a String object pointed to by a Comparable reference. (这行代码会创建一个Comparable引用指向的String对象)
D .
Although it is perfectly valid Java, it should be avoided due to confusion(虽然这是有效的Java代码,但应该避免使用,以免引起混淆).
E .
none of the above are true(以上都正确)
结对及互评
点评过的同学博客和代码
- 本周结对学习情况
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 90/90 | 1/1 | 20/20 | |
第二周 | 377/467 | 1/2 | 14/34 | |
第三周 | 344/811 | 1/3 | 17/51 | |
第四周 | 846/1684 | 2/5 | 》30/81 | |
第五周 | 777/2461 | 1/6 | 12/93 | |
第六周 | 461/2922 | 1/7 | 10/103 | |
第七周 | 761/3683 | 2/9 | 25/128 | |
第八周 | 911/4594 | 1/10 | 10/138 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:18小时
-
实际学习时间:10小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)