学号20172328《程序设计与数据结构》第九周学习总结
教材学习内容总结(异常和递归)
第11章:异常html
- 1.【异常处理】:
- 一个异常:是一个定义非正式状况或错误的对象,由程序或者运行时环境抛出,能够根据须要捕获和处理。
- 错误:错误相似于异常,可是错误表明不可恢复的问题而且必须捕获处理。
- 2.【处理异常的三种方法】:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常。
- 3.【未捕获的异常】:若是程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息。第一行异常信息代表抛出的是什么异常,并提供了抛出该异常的缘由。其余行的信息是方法调用踪影信息,指明异常在何处发生。经过调用被抛出异常类的方法,也能够得到调用堆栈踪影。getMessage方法返回一个字符串,解释异常抛出的缘由;printStackTrace方法输出调用堆栈踪影信息。
- 4.【try-catch语句】:
- try-catch语句用来标志可能抛出异常的语句块,catch子句跟在try语句块后,用于定义如何处理一种指定的异常。
try
{
语句块
}
catch(类型名 标识符)
{
语句块
}
- 执行try语句块时,若是没有异常抛出,将继续执行try-catch结构语句后的语句,这是正常状况执行流程。
- 若是try语句块执行的任何位置抛出了异常,而且存在catch子句,则控制当即转移到相应的catch子句处理异常,即控制转移到第一个与抛出异常相匹配的catch子句执行,执行完以后,跳出try-catch语句结构继续执行。
- 5.【finally子句】:有点像switch语句中的default语句,不管怎么样,这个语句必定会执行。若是有finally子句,那必定要排在catch子句后,除非没有catch子句。不管try语句块正常退出或因为抛出异常而退出,都将执行finally子句,所以能够利用finally子句管理资源或保证必定执行某段代码。
- 6.【异常的传递】:
- 若是在上级调用方法中仍然没有捕获和处理下级传上来的异常,则控制将返回到上级调用方法的更上一级调用方法,这个过程叫作传递异常。异常将一直传递下去,直到被捕获和处理,或直到异常传递出main方法,这时将终止程序的运行并产生错误信息。
- 若是在一个异常的发生处没有处理和捕获异常,控制将当即返回产生该异常的方法的上一级调用方法,所以能够将程序设计为在上级调用方法(外层调用)中捕获和处理异常。
- 7.【异常类参次结构】:
- 定义各类的类由继承关系关联在一块儿。
Throwable是Error类和Exception类的父类。许多异常的类型都是由Exception
类派生,而在这些类中也有许多子类。
虽然这些高层的类定义在java.lang包里,但定义各类异常的子类却分散定义在其余几个包中,继承关系能够跨包越界。
- 【自定义异常】:咱们能够从Exception类或它的后代类派生一个新类,定义本身的异常,选择什么类做为父类由新异常所表明的问题和条件决定。
- 【可检测异常和不可检测异常】:Java中惟一不能检测的异常是RuntimeException类的对象或该类的后代类服务对象。全部其余的异常都是可检测异常。
❀可检测异常:必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来。
♤ 在方法定义的声明头中加throws子句就明确了该方法在异常发生时将抛出异常或者传递异常。main方法之因此须要throws子句,是由于它所抛出的异常类由由Exception类派生,从而使得它的子类是一个可检测异常。
❀不可检测异常:无需throws子句。
- 8.【 I/O(输入/输出)异常】:
- 标准I/O流有三种:
标准I/O流 |
说明 |
System.in |
标准输入流 |
System.out |
标准输出流 |
System.err |
标准错误流(输出错误信息) |
- 书本11.7的例子教咱们建立文件和写数据文件。可是更详细的仍是老师在课堂上给咱们展现的例子。我复制好上传到码云上了,若是你须要能够去看看。Here you are
[学长提问后添加的知识点](Java异常处理中throw和throws的区别):
♤♤♤throw是语句抛出一个异常。 语法:throw (异常对象);
♧♧♧throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)。语法:(修饰符)(方法名)([参数列表])[throws(异常类)]{......}java
throw与throws的比较:
一、throws出如今方法函数头;而throw出如今函数体。
二、throws表示出现异常的一种可能性,并不必定会发生这些异常;throw则是抛出了异常,执行throw则必定抛出了某种异常对象。
三、二者都是消极处理异常的方式(这里的消极并非说这种方式很差),只是抛出或者可能抛出异常,可是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
好的编程习惯:
1.在写程序时,对可能会出现异常的部分一般要用try{...}catch{...}去捕捉它并对它进行处理;
2.用try{...}catch{...}捕捉了异常以后必定要对在catch{...}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
3.若是是捕捉IO输入输出流中的异常,必定要在try{...}catch{...}后加finally{...}把输入输出流关闭;
4.若是在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,而后交给调用它的上层函数进行处理。git
第12章:递归程序员
最后给你一张图,(* ̄︶ ̄)
学习
- 问题4:字节流和字符流究竟是什么?为何在I/O异常这节提到了?定义在java.io包中的那么多方法都怎么系统的理解?
- 4.(〃'▽'〃)本题解答:
问题1:在我作pp11.2时个人catch语句中不能引用我自定义的异常类和变量,我很奇怪,查了资料catch后面括号中应该是要填异常类和变量,可是仍是报错。提示也只是让我删掉try-catch语句,那我就是要写这个啊,让我删了,心塞

1.(〃'▽'〃)本题解答:思考好久后,我仍是请教了助教,学长告诉我“你是没有理解程序运行逻辑”。这是为何?就是由于我没有抛出个人异常类的异常(就是说没有throw语句)?是的!自定义的异常类须要先抛出再去解决,不会影响程序中断。

问题2:在作pp12.9时思路不正确,代码没有报错,但在运行时没法实现。

2.(〃'▽'〃)本题解答:以前在草稿纸上将三角阵的坐标一个一个列出来,而后想从索引和坐标的关系着手去作,当时的问题就是直接没法输出。我反复看了好多遍,发现个人递归方法传入的是两个个int型的数字分别表明横纵坐标值,返回的倒是数值,这样的不匹配怎么可能运行成功呢。因此我又开始读题,题目表示每一行的数值须要存在数组里面,若是要使用递归的话最方便的就是让其返回一个数组,而后直接在个人main函数下实现。作的时候又卡壳了,我在行数n>3的地方用了索引,而后就出现了下图的奇怪输出,左右两边的数字竟然是0;

而后我就想,不是递归回去了吗?那我在前面的非递归语句中已经说明了是1的呀。可是好像又没有给最后一个数字定值。而后我就加了两个语句在个人else语句块里面pascal[0]=1; pascal[n-1]=1;
这样作完以后运行是能够的。

上周考试错题总结
- 问题1:Polymorphism is achieved by(多态性是经过什么实现的呢?)
A . overloading(重载)
B . overriding(重写)
C . embedding(嵌入)
D . abstraction(抽象)
E . encapsulation(封装)
- 1.(〃'▽'〃)本题解答:本题答案是B。当时选了D。❀重载只是为具备不一样参数列表的方法提供了备选方案。❀重写提供了多态性,由于适当的方法是根据当前被引用的对象而调用的。❀嵌入是类中包含的类。❀抽象与多态没有任何关系。封装是使用可见性修饰符(公共的、私有的、受保护的)实现的。因此要选择重写。
- 问题2:Which statement is completely true?(哪句话是彻底正确的?)
A . Java upcasts automatically, but you must explicitly downcast(java中向上的类型转换是自动的,可是向下的类型转换必须明确说明)
B . Java downcasts automatically, but you must explicitly upcast(java中向下的类型转换是自动的,可是向上的类型转换必须明确说明)
C . Java expects the user to explicitly upcast and downcast(java中用户向上或者向下转型时都须要明确说明)
D . Java will both upcast and downcast automatically(java中用户向上或者向下转型时都是自动的)
E . The rules for upcasting and downcasting depend upon whether classes are declared public, protected, or private(向上转型和向下转型的规则依赖因而否该类被声明为public、protected、private)
- 2.(〃'▽'〃)本题解答:j本题答案选择A,我选择了E。ava中向上转型是自动的,它是Java支持的单一继承结构的产物。相比之下,向下转换必须由程序员显式地完成。Java只在一个方向上自动转换。向上转型和向下转型的规则并不依赖于任何方式包括使用的可见性修饰符。(本题我查找了资料Java 转型(向上或向下转型)详解及简单实例)
- 问题3:Can a program exhibit polymorphism if it only implements early binding?(若是一个程序仅仅实现了早期绑定,那么它能显示多态吗?
)
A . Yes, because one form of polymorphism is overloading(是,由于多态性的一种形式是重载)
B . No, because without late binding polymorphism cannot be supported(不,由于没有后期绑定多态不能被支持)
C . Yes, because so long as the programs uses inheritance and/or interfaces it supports polymorphism(是,由于只要程序使用继承和/或接口它支持多态)
D . Yes, because early binding has nothing to do with polymorphism(是,由于早期绑定与多态性没有任何关系)
E . none of the above(以上都不对)
- 3.(〃'▽'〃)本题解答:答案选A,我选了B。虽然继承和接口支持多态,但只有在有后期绑定时才会这样作。可是,重载是多态性的另外一种体现形式,多个主体,只要程序使用重载,多态就在使用中。
- 问题4:The fact that the System.out.println( ) method is able to handle such a wide variety of objects, and print them correctly, is an example of the polymorphic nature of the println( ) method.(System.out.println()方法可以处理如此普遍的对象,并正确地打印它们,这是体现多态特性的一个例子。)
A.ture
B.false
- 4.(〃'▽'〃)本题解答:答案是A。因为println()本质上是高度多态的,因此它可以正确地打印各类预约义的(库)和内置(原始)数据。
讲一个颇有趣的现象,无论题目多少,已经连续好多周20分哈哈哈,即便都是20,也有错四、七、八、10个的。
结对及互评
-20172301
-20172304
点评模板:
- 博客中值得学习的或问题:
- 20172301:在总结学习内容方面,我以为郭恺同窗更擅长表达章节重点所在。排版一直美观,可是此次的博客总体质量(在知识点对比详解之类)不如前不少次那样那样好,多是这两章内容对他说不是很难理解吧。
- 20172304:博客简洁美观,内容有点少,其实段志轩同窗是务实型的,可能在编程方面优于总结博客方面吧。
- 代码中值得学习的或问题:
- 学习编程过程当中我发现不少知识点本身不熟悉,不少问题有思路但不会实践于项目中。
- 有时候有点苦恼,容易放弃。仍是要向队友学习,不惜时间,认真钻研,敢于深究。
其余(感悟、思考等,可选)
这两天在刷朋友圈和空间的时候忽然看到了一个词:积极废人
指那些很爱给本身立Flag,可是永远作不到的人。这类人心态积极向上、行动上宛如废人通常,他们每每会间歇性享乐后恐慌,时常为本身的懒惰自责。
这个词真的很适合我,我就是属于心有浩瀚,却老是被本身的借口打断的人。
我但愿无论是在java这门课程的学习上,仍是个人其余事情上都能实现自我控制感。这不是要我本身作到多好,我只想有本身的节奏有本身方向有本身的车辙。就像我如今选择尽可能不熬夜,每周给本身必定的放松的时间,该投入的时候竭尽全力。
最喜欢给父母打电话,每当我以为事情繁多,前路暗淡,我爸妈总说:你觉得最差的结果就是你一事无成回到咱们身边,可是咱们可能认为那是最好的结果;你尽力就好,咱们只要你健康快乐。
可能每一个人要走的路都不同,每一个阶段咱们碰见不一样的人,学习不一样的科目,去到不一样的地方,看到不一样的风景,珍惜不一样的对本身珍贵的东西。因此,我会好好珍惜如今,毕竟18岁不长,于我而言还剩短短几月,只有那么两个季度,还有那些密密麻麻,不曾相会的事情。
学习进度条
目标 |
5000行 |
30篇 |
400小时 |
第一周 |
100/100 |
1/1 |
15/15 |
第二周 |
377/477 |
1/2 |
20/35 |
第三周 |
280/757 |
2/4 |
22/57 |
第四周 |
973/1730 |
1/5 |
35/92 |
第五周 |
1000/2730 |
1/6 |
40/132 |
第六周 |
729 /3459 |
1/7 |
40/172 |
第七周 |
660/4119 |
2/9 |
30/192 |
第八周 |
1417/5536 |
3/12 |
40/232 |
第九周 |
1139/6675 |
2/14 |
60/292 |
参考资料