首页 > 其他分享 >lambda表达式以及异常

lambda表达式以及异常

时间:2023-04-17 19:57:07浏览次数:35  
标签:Exception 代码 try catch 异常 表达式 lambda

lambda表达式

简化匿名内部类*****

前提:

​ 函数式接口 : 只有一个被重写的抽象方法的接口

​ @FunctionalInterface 强制检测一个接口是否为函数式接口

语法:

​ ()-> {}

​ ():重写抽象方法的参数列表

​ ->:箭头函数,lambda符号

​ {} :重写抽象方法的方法体

函数式编程:将函数的实现作为参数传递

为接口类型的引用赋值的时候

  1. 是否为函数式接口,如果是
  2. 可以通过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种运行时异常 :

  1. 空指针异常
  2. 类型转换异常
  3. 数组索引越界异常
  4. 数组长度负数异常
  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,或者Exception下的子类(不能继承自RuntimeException)

​ 自定义的运行时异常需要直接或者间接的继承自RuntimeException

​ 制造异常 throw

异常学习重点掌握 :

​ 1.异常体系

​ 2.异常处理方案

标签:Exception,代码,try,catch,异常,表达式,lambda
From: https://www.cnblogs.com/Heyking/p/17327256.html

相关文章

  • Java8新特性2_Lambda表达式
    Lambda表达式为什么要用Lambda表达式Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁、更灵活的代码,作为一个更紧凑的代码风格,使Java语言表达能力得到了提升实例代码Lambda表达式最先替代的就是匿名内部类,假设......
  • Cron表达式介绍与示例
     1.概念介绍Cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为XXXXXXX。其中X是一个域的占位符。最后一个代表年份的域非必须,可省略。单个域有多个取值时,使用半角逗号,隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符......
  • html模板里的表达式不能用小于号
    今天用angular写*ngIf="item.cnt <= 5"这个表达式的时候报错,他将<后面的东西当做html标签来看了,怎么办呢可以用html转义字符来表示小于号<换成下面就可以了*ngIf="item.stockCnt &lt= 5"<<&#60;小于号>>&#62;大于号......
  • mysql异常处理
    ################一、主从不一致误登录从库写入数据:第一步在从库上停掉SQL线程:stopslavesql_thread;磁盘空间不足:删除归档日志,保留30天,setglobalexpire_logs_days=15; PURGEMASTERLOGSBEFORE'2020-03-1500:00:00';purgebinarylogsbefore‘2020-08-0300:00:00’;清理......
  • c#中的异常处理
    try、catch、finally异常是程序在执行过程中出现了错误,就像汽车行驶过程中刹车失灵或爆胎了,如果程序没有提供处理该异常的代码,系统会挂起这个程序(就是死掉了,崩掉了)。c#中处理异常,需要用到try、catch(可以写多个该部分)、finally这三个代码块。具体作用见下图:尤其注意Final......
  • Cron表达式
    一、字段释义00/5***?秒分时天(月)月天(周)年份(一般省略)二、符号释义*:表示所有可能的值/:表示数值的增量,简单来说,比如分写上0/5表示从0分开始,每隔5分钟?:仅用在天(月)和天(周),表示不指定值,当其中一个有值时,另外一个需要设为?每一个字段都......
  • Java中线程的常用操作-后台线程、自定义线程工厂ThreadFactpry、join加入一个线程、线
    场景Java中Thread类的常用API以及使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126596884上面讲了Thread的常用API,下面记录下线程的一些常用操作。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现后台线程后台线程,是指运行时在后台提供的一......
  • P1449 后缀表达式-模拟栈
    题目描述所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。如:3*(5-2)+7 对应的后缀表达式为:3.5.2.-*7.+@。在该式中,@ 为表达式的结束符号。. 为操作数的结束符号......
  • mongo db 异常关闭后重启报错
    报错信息:abouttoforkchildprocess,waitinguntilserverisreadyforconnections.forkedprocess:22200ERROR:childprocessfailed,exitedwitherrornumber1Toseeadditionalinformationinthisoutput,startwithoutthe"--fork"option解决办法......
  • 运算符、表达式和语句
    运算符、表达式和语句关键字--->while、typedef运算符--->=、-、*、/、%、++、--复合语句、自动类型转换、强制类型转换编写带有参数的函数while循环示例代码:#include<stdio.h>#defineADJUST7.31intmain(void){constdoubleSCALE=0.333;dou......