【Java学习】异常&Lambda表达式

一、异常

1、概述

异常代表程序出现的问题

异常的体系

Error:IDEA内置的错误,代表的系统级别错误(属于严重问题),也就是说系统一旦出现问题,sun公司会把这些问题封装成Error对象给出来,说白了,Error是给sun公司自己用的,不是给我们程序员用的,因此我们开发人员不用管它。 

Exception:叫异常,它代表的才是我们程序可能出现的问题,所以,我们程序员通常会用Exception以及它的孩子来封装程序出现的问题。

  • 运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界异常)
  • 编译时异常:编译阶段就会出现错误提醒的。(如:日期解析异常)

2、异常的处理

抛出异常(throws

在Java的方法调用中,如果一个方法中出现了异常,本方法自己不处理,默认是会抛给调用方法去处理的,此时要注意的是,如果发生的是非运行时异常,需要在方法上明确使用throws关键字声明抛出

// 推荐方式
方法 throws Exception{
}
// Exception代表可以捕获一切异常

捕获异常(try…catch)

直接在当前方法,发生异常的代码外使用try--catch--结构捕获并处理异常,异常处理后,后续的代码是可以继续执行的

// 推荐方式
try{
    // 可能出现异常的代码!
}catch (Exception e){
    e.printStackTrace(); // 直接打印异常对象的信息
}
// Exception代表可以捕获一切异常

3、自定义异常

作用:可以做为方法内部的一种特殊的返回值,以便通知上层调用者底层的执行情况!

Java无法为这个世界上全部的问题都提供异常类来代表, 如果以后我们自己写的代码中的某种问题, 想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。

自定义运行时异常

  • 定义一个异常类继承RuntimeException
  • 重写构造器
  • 通过throw new异常类(xxx)来创建异常对象并抛出

此方法编译阶段不报错,提醒不强烈,运行时才可能出现!

自定义编译时异常

  • 定义一个异常类继承Exception
  • 重写构造器
  • 通过throw new 异常类(xxx)来创建异常对象并抛出

编译阶段就报错,提醒更加强烈!

二、Lambda表达式

Lambda表达式是JDK 8开始新增的一种语法形式; 作用:用于简化匿名内部类的代码写法。

只能简化函数式接口的匿名内部类,函数式接口就是仅有一个抽象方法的接口。

注意:大部分函数式接口上面都会有一个@FunctionalInterface的注解,有该注解的接口就必定是函数式接口。

Lambda表达式简化方法:

  • 参数类型可以省略不写
  • 如果只有一个参数,小括号()也可以省略。
  • 如果Lambda表达式中的方法体代码只有一行代码,可以省略花括号{}不写,同时要省略分号!此时,如果这行代码是return语句,也必须去掉return不写。

举例子:

//匿名内部类操作接口
        Person person1 = new Person() {
            @Override
            public void eat() {
                System.out.println("吃饭");
            }
        };
        person1.eat();

        //Lambda简化
        Person person2 = () -> {
            System.out.println("吃饭");
        };
        person2.eat();

建议新手不要在写匿名内部类的地方直接套用Lambda的格式,这玩意写完了自己大概率就看不懂了,老老实实把匿名内部类写出来,想要简化代码的话再根据简化方法一点一点修改。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值