11.21工作学习记录 异常 lambda表达式 stream流

根类 throwable 下面有两个子类  error 错误 错误是无法通过处理的   exception 异常

异常的分类   编译时异常  运行时异常 编译阶段就会报错 就是写代码的时候就出现问题   运行时异常 写代码时不报错  运行时才报错  继承自runtimrException的都是运行时异常 其他都是编译时异常  编译时异常是担心程序员技术不行 在编译阶段就爆出一个错误用于提醒 可遇不可求  遇到了就抛出

8ea40aeba67c48f78af2399e6306521a.png

 

异常抛出过程: 在某一行出现了运行时异常 会在此处创建一个异常对象AirthemticException 首先把异常送到方法入口  再送到调用的地方  再送到main方法 再交给   JVM 虚拟机接收到异常以后 现在控制台直接输出异常栈信息   然后直接从当前执行的异常点干掉程序   后续代码没有机会运行 

编译时异常抛出的方式   throw  exception  直接抛大类  有异常就往上抛  都不负责任  这种方式不太好  一旦运行出现异常  他还是会让后面的代码停止运行 程序死亡

方式二 出现异常的地方直接处理   谁出异常谁处理   try  catch   在catch内打印异常栈信息 可以不用写多个catch  可以多个异常在一个catch的入口并列   企业级写法是  在catch内直接写 exception  拦截所有异常  但是方式二也有一点问题  就是上层不知道程序到底是成功还是失败   我让马少聪去买瓜  他可能一去不复返 但是我不知道情况

第三种  就是throw 跟try catch联合   底层出现的问题 交给上层集中处理   内部用throw  外部用try catch  这样就很清晰 而且程序出现异常后也不会立即死亡

编译时异常是被迫的  运行时异常是可选择的       运行时异常的处理规范  直接最外层捕获处理即可 底层会自动跑出

throw与try catch的区别  throws是往上抛 都不负责  catch是直接在这里处理  并且打印出异常栈信息

flnally 最多一次 可有可无 无论异常还是正常 他一定会运行  收尾代码 回收资源 清扫资源   例子 用于输入输出流的关闭  因为前面的代码可能导致异常 那么在t ry里面io流无法关闭   只能用finally来关闭了    什么是资源? 自带了closeable接口  可以使用close方法的就是资源   不建议在finally中写return  因为他会覆盖前面所有的return值

自定义异常  我们可以描述公司的某种问题是一种异常 那么我们需要自己继承exception类来写一个自定义异常类  例子 年龄不能小于0或者大于两百   我们先继承exception类创建AgeIllegaException  重写父类方法  后   throws代表向上抛异常  而throw new代表 new一个异常对象

 

739e527f97f34b8c865fde5e1ac576fc.png

因为方法里抛出了编译时异常 那么就会在异常发生的地方 打印出异常原因   你觉得这个异常严重  就定义成编译时异常   你觉得这个异常不严重 就定义成运行时异常

f12f23d6a7f64fdfb6b1d8e2bf9f103f.png

 异常的作用 案例

be082e3937f2440cada09fadd2e02004.png

lamada表达式的作用  简化匿名内部类  只能简化只有一个抽象方法的匿名内部类写法  @FunctionalInterface  只要接口上加上了这个注解  就代表可以用lamada表达式重写  案例一简化Thread类

 77c8c9e8888b4316b111c5aecae5aad3.png

 案例二简化comparator  

a8e6e680d44b47ceb92139ba9a7b9be6.png

 方法引用的简化  静态方法的引用   实例方法的引用  特定类型方法引用  构造器引用   数组里面也可以接比较器

Stream流可以解决什么问题? 可以解决已有集合或者一些数组的弊端  可以把某个集合变成水流一样 可以链式编程

f7f23c5479f5420990ab96fba43371c4.png

 流就像是一根传送带 在传送过程中对其可以做各种操作

map集合可以拿键流或者拿值流 或者键值对流

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值