标签:
java中所有的错误都会打包为对象,可以try catch代表错误的对象后做一些处理(可以显示错误,也可以恢复正常流程)。
错误包装为对象是可以抛出的,所有的设计错误对象都是继承java.lang.Throwable类(java.lang.Error、java.lang.Exception为其两个子类)。一般的,error错误抛出时,基本上不用处理。 如果某个方法声明会throw throwable或子类实例,不是error和runtimeexception及其子类,即必须用try catch进行处理。
exception及其子对象,不少于runtimeexception或其子对象,称为受检异常(受编译程序检查),程序认为你有能力处理错误,你就需要去处理。同时要注意错误发生的时机,是否可以及时处理。
如果父类异常对象在子类异常对象前catch,那么catch子类异常对象的区块将永远不会被执行,所以要注意捕捉的顺序。
可以使用多重捕捉简化程序(注意不得有继承关系)。
如果方法设计流程中发生异常,而你没有充足的信息来知道如何处理,可以抛出异常,让调用方法的客户端来处理。 处理完部分错误后,可以使用throw将异常再抛出,但必须在方法上使用throws声明(受检异常)
处理完部分异常后,你可以重新抛出异常,为了更精确地显示错误,可以通过自定义异常
可以使用printstacktrace来进行错误的追踪,要善用stacktrace。用fillinstacktrace()方法可以重新装填异常堆栈,将起点设为重抛异常的地方,并返回throwable对象。
用来判断程序执行的某个time point或是否处于某个特定的state,不是的话可以停止程序进行修改。
Assertion常用的几种情况:
1、前置条件的准备(private方法之中) 2、调用方法后承诺效果 3、assert对象某个time point下的状态 4、取代批注 5、assert不会执行到的那部分 6、不能有default的状况
无论try区块中有误发生异常,若有finally区块,则finally区块一定会被执行。另外注意如果程序流程中先return了,同时有finally区块,那会先执行finally区块再返回值。
自动尝试关闭资源是协助你关闭资源,而不是用于异常处理,使用该语法时,不要试图自行撰写程序代码关闭资源。
try with resources 语法所操作的一个接口。
记录每个对象的索引顺序并能依索引取回对象,这样的行为定义在java.lang.list中;如果希望对象不重复,则由java.util.Set定义;如果以队列方式,使用java.lang.Queue。(不同的收集对象的需求操作不同的接口、继承不同的类)。
以索引方式保留收集对象的顺寻,操作类之一为java.lang.ArrayList
ArrayList与LinkedList的区别:(一个是顺序存储结构,一个是链式存储结构,各有优势和缺点)
arraylist:数组在内存中会是连续的存储空间,不适合调整索引顺序,但是存取时速度快。
linkedlist:存储效率低,不适合排序,但是调整索引顺序所需动作较少。
存在不收集相同对象的需求时,可以使用Set接口操作对象。java中判断对象是否重复时,都会调用hashcode()与equals()方法,两个方法最好同时操作。
收集对象时加入尾端,取得对象时从前段(有点像堆栈,先进后出、后进先出),Queue自己定义了offer、poll、peak等方法(各有各自的功能)
如果需要对队列的前端与尾端进行操作,就可以用到Deque中定义的一些行为。
在设计API时可以指定类或方法支持泛型,从而使对象重新扮演为某种类型,使语法更为简洁。
lambda语法表达式省略了接口类型与方法名称,->左边卫参数列,右边是方法本体
iterator()方法会返回java.util.Interator接口的操作对象,可以使用hasnext()来看有无下一个对象,interable可以用在增强式for()循环中,感觉就是将上述的那几种结构做了一个统一,方便从里面取值输出。
9.1.8Comparable Comparator
Collection中提供有排序的算法,但必须有索引,所以sort()方法接受list的操作对象。
Comparator:用来排序的接口
HashMap、TreeMap为两个常用操作类:建立键值对应,可以使用puts()方法,键不会重复,hashmap键值建立后,键是无序的,想要有序可以使用treemap。
课后练习:
Ch8:C C B ACD ACD CD B A A A
Ch9:CD AB C D D A ABC C C CD
这两章感觉没咋看懂,异常处理这块和第九章好像是java中的数据结构,比之前的复杂了一些,多了许多类,许多种语法,继承架构也明显地变抽象了,有很多东西都与API 有关,要善于查API,java中的类太多,不需要全部记住,但是要会查、会用。程序就是通过不断地学习,一点点拼凑出来的。
代码行数(新增/累积 | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 150/200 | 2/2 | 15/20 | |
第二周 | 400/500 | 3/4 | 32/35 | |
第三周 | 800/1000 | 4/5 | 55/60 | |
第四周 | 1000/1300 | 5/6 | 75/80 | |
第五周 | 1700/2000 | 6/7 | 90/95 | 这周学得不咋样...... |
标签:
原文地址:http://www.cnblogs.com/1152wyx/p/5347844.html