【Java】异常和Lambda表达式
        【摘要】 @TOC 前言本篇文章介绍了异常和Lambda表达式Lambda表达式,可以避免匿名类太多,使用也方便。异常是在程序的运行过程中所发生的异常事件,这些异常事件都属于不正常现象,他中断指令的正常执行。 一、异常关键字:try(监控区域),catch(捕获异常)、finally(处理一些善后的工作),throw,throws(抛出异常)。最主要的用法:try{            //监控区域...
    
    
    
    @TOC
前言
本篇文章介绍了异常和Lambda表达式
 Lambda表达式,可以避免匿名类太多,使用也方便。
 异常是在程序的运行过程中所发生的异常事件,这些异常事件都属于不正常现象,他中断指令的正常执行。
一、异常
关键字:try(监控区域),catch(捕获异常)、finally(处理一些善后的工作),throw,throws(抛出异常)。
 最主要的用法:
try{            //监控区域
 
    可能发生异常的一条或者多条语句
}catch(异常名 参数名){
 
    异常处理语句
}finally{       //无论有无异常,finally语句一定会执行的
    最后异常处理语句
}
 
 一个例子:
int a=7,b=0;
int sum;
try{
    sum=a/b;  //监控
}catch (ArithmeticException e)
{
            //如果监控区域出现异常,则捕获异常
  System.out.println("捕获"+e);//捕获异常
}finally {
  System.out.println("哈哈,我运行了");//善后工作,关闭操作
}
 
 其中finally可以省略
try{
 
}catch(){
 
}
 
 
 
 
try{
 
}catch(){
 
 
}catch(){
 
 
}
...
finally{//可以省略
 
 
}
 
 当出现多个catch时一定要满足异常的范围从小到大,在上面的异常范围最小
 throws语句
 如果方法内生成一个异常,但无法确定如何处理此异常,如“找不到文件”等异常,必须将异常传送给调用方法,由他的调用方法来处理,这种情况下,方法应该用声明异常抛出,让异常对象可以从调用栈处向后传递,知道有相应的办法捕获它为止。(也就是我现在不处理这个异常,如果有人用这个方法,那你处理异常)
举个栗子:
public class lizi{
 
    public void imlizi() throws ArithmeticException{
 
        System.out.println("我是例子");
    }
}
 
 imlizi这个方法抛出了异常,所以调用这个方法的使用就需要用try…catch语句来捕获异常
throw语句
 在程序运行期间可以直接使用throw手工的抛出一个异常类的实例化对象。
二、Lambda表达式
匿名内部类
public class Demolambda {
    public static void main(String[] args) {
        iLove love = new iLove() {
            @Override
            public void love() {
                System.out.println("我爱你,是多么痛苦的信仰");
            }
        };
        love.love();
    }
 
}
interface iLove{
    void love();
 
}
 
 简化1
public class Demolambda {
    public static void main(String[] args) {
        iLove love;
        love = ()-> {
                System.out.println("我爱你,是多么痛苦的信仰");
            };
        love.love();
 
    }
 
}
interface iLove{
    void love();
 
}
 
 简化二,去大括号
public class Demolambda {
    public static void main(String[] args) {
        iLove love;
        love = ()-> System.out.println("我爱你,是多么痛苦的信仰");
        love.love();
 
    }
 
}
interface iLove{
    void love();
 
}
 
 有参
public class Demolambda {
    public static void main(String[] args) {
        iLove love;
        love = (int a)-> System.out.println("我爱你,是多么痛苦的信仰"+a);
        love.love(521);
    }
 
}
interface iLove{
    void love(int a);
 
}
 
 有参简化1,去类型
public class Demolambda {
    public static void main(String[] args) {
        iLove love;
        love = ( a)-> System.out.println("我爱你,是多么痛苦的信仰"+a);
        love.love(521);
    }
 
}
interface iLove{
    void love(int a);
 
}
 
 有参简化2,去括号
public class Demolambda {
    public static void main(String[] args) {
        iLove love;
        love = a-> System.out.println("我爱你,是多么痛苦的信仰"+a);
        love.love(521);
    }
 
}
interface iLove{
    void love(int a);
 
}
 
 总结
Lambda表达式注意:
1、如果有多个参数时,括号不能去
2、参数类型要有都有,要去都去
3、方法体只有一行代码时,才可以去掉大括号
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)