lambda表达式
简化匿名内部类*****
前提:
函数式接口 : 只有一个被重写的抽象方法的接口
@FunctionalInterface 强制检测一个接口是否为函数式接口
语法:
()-> {}
():重写抽象方法的参数列表
->:箭头函数,lambda符号
{} :重写抽象方法的方法体
函数式编程:将函数的实现作为参数传递
为接口类型的引用赋值的时候
- 是否为函数式接口,如果是
- 可以通过lambda表达式进行赋值
写法1:标准写法
/*Swim swim = ()->{ System.out.println("边喝水边游泳...."); };*/
写法2 : 当lambda体中语句只有一句,前后的{}可以省略
//Swim swim = (x,y)->System.out.println("边喝水边游泳...."+(x+y));
写法4 : 当参数只有一个,前后的()可以省略
//Swim swim = x->System.out.println("边喝水边游泳...."+(x));
写法5 : lambda体中语句只有一句,并且这个语句是return语句,前后的{}与return关键字可以一起省略
// Swim swim = x->x>=18;
异常
异常 :
异常机制
异常一旦出现就会影响程序的运行异常体系 :
Throwable / \
Error Exception
Error : 一般是由虚拟机生成并脱出的,不由程序猿控制解决
Exception : 异常
编译时异常|检查时异常 : CheckedException
发生在程序编译期间,如果不处理程序无法运行---->标准的异常处理方案
运行时异常 : RuntimeException
发生在运行期间,如果不处理程序无法继续运行 ---->标准的异常处理方案 | 增强程序健壮性if
说出5种运行时异常 :
- 空指针异常
- 类型转换异常
- 数组索引越界异常
- 数组长度负数异常
- 数学异常
异常处理方案 :
*****
异常抛出 : throws : 将异常从方法的内部抛出到方法上面,由调用方法的位置解决这个异常
在方法上通过throws抛出某种类型的异常,代表当前方法执行过程中有可能出现的问题
异常捕获:try-catch
try{ 有可能出现异常的代码段; }catch(FileNotFoundException e){ 遇到对应类型的异常对象出现,捕获执行{}中的代码; }catch(NullPointerException e){ 遇到对应类型的异常对象出现,捕获执行{}中的代码; }.... catch(Exception e){ 相当于else,default... }finally{ 无论是否遇到异常,都会执行finally中的代码; }
一个try的后面可以跟1~n个catch,没有个数限制
多个catch捕获的异常类型要求从小到大
try中的代码可以回遇到异常可以不会
从上到下执行try中的代码,如果一旦遇到异常,停止try中代码的执行,直接从上到下的判断catch,执行对应的catch后面的{}
如果执行try中代码时,没有遇到异常,不会执行catch
jdk7中,可以将多个catch合并为一个,简化try-catch代码结构
标签:Exception,代码,try,catch,异常,表达式,lambda From: https://www.cnblogs.com/Heyking/p/17327256.html自定义异常 :
自定义的异常类型继承自异常体系
自定义的编译时异常需要继承自Exception,或者Exception下的子类(不能继承自RuntimeException)
自定义的运行时异常需要直接或者间接的继承自RuntimeException
制造异常 throw
异常学习重点掌握 :
1.异常体系
2.异常处理方案