异常,Lambda表达式

文章目录

  • 异常
    • 介绍
    • 存在形式
    • 程序中异常发生后的第一反应
    • 体系
    • JVM的默认处理方案
    • 处理方式
      • 声明 throws
        • 概述
        • 格式
        • 抛出 throw
          • 格式
          • 注意
          • 意义
        • throws和throw的区别
      • 捕获 try,catch
        • 介绍
        • 格式
        • 执行方式
        • 多异常捕获处理
        • 意义
      • 如何选择用哪个
    • Throwable类
      • 介绍
      • 常用方法
    • 自定义异常
      • 概述
      • 实现步骤
      • 范例
      • 意义
  • Lambda表达式
    • 作用
    • 前提
      • 函数式接口
        • 特点
    • 语法
    • 省略模式
    • 和匿名对象类的区别

异常

介绍

程序出现了不正常的情况。
程序在执行的过程中,数据导致程序不正常,最终会导致JVM的非正常停止

存在形式

Java中提供的类的对象

程序中异常发生后的第一反应

中断向下执行

体系

Snipaste_2024-04-01_18-13-43.png

  • 编译时异常(受检异常):程序在编译的时候可能出现的异常,编译时期必须处理,否则程序无法执行
  • 运行时异常(非受检异常):程序在运行时可能出现的异常

JVM的默认处理方案

  • 把异常的类型,原因,位置打印在控制台
  • 程序停止执行

注意:程序中出现了异常,会在当前位置创建此异常的对象,对象中包含了异常的信息,并把此异常交给本方法的调用者处理

处理方式

声明 throws

概述

遇到异常,自己不处理,交给别人处理

格式
//在使用声明的方式处理异常,声明是书写在方法定义上
修饰符 返回值类型 方法名(参数类型 参数1,...)throws 异常类{

}

抛出 throw

格式
修饰符  返回值类型  方法名(参数列表){
    throw  new 异常类名();
}

注意
  1. 抛出异常的格式必须在方法的内部完成
  2. 抛出异常下面的代码无法执行
意义
  1. 在方法中,当方法传递的参数有误,没有运行下去的意义,则采取抛出处理,表示该方法结束运行
  2. 告诉调用者方法中出现了问题
throws和throw的区别

Snipaste_2024-04-01_20-14-16.png

捕获 try,catch

介绍

在本方法内部处理,自己处理

格式
try{
  //存放可能出现异常的代码
  1.代码...
  2.代码...
  3.代码...
}catch(异常类型 变量名){
  4.处理异常方案
}
  5.其他代码..

执行方式

上面格式中try中没有发生异常:1235
上面格式中代码2发生异常:145

多异常捕获处理

Snipaste_2024-04-01_20-25-00.png

意义

阻止异常传递,让程序可以继续往下执行

如何选择用哪个

  • 声明:自定义方法
    • 方法体内代码比较清爽
    • 把异常统一抛出到main方法中,进行统一的处理
  • 捕获:
    • main方法中只能使用捕获
    • 父类型中的方法不支持throws,在子类重写方法时,重写的方法只能用:捕获
public class ExceptionDemo4 extends Thread {

    @Override
    public void run() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

Throwable类

介绍

异常的顶层父类

  • 子类:Error类(错误类) //异常处理无法解决错误
  • 子类:Exception(异常类) //可以使用异常处理解决

常用方法

Snipaste_2024-04-01_20-26-26.png

自定义异常

概述

JDK中的异常类型不满足实际的业务需求时,程序自己编写的异常类

实现步骤

  1. 定义异常类
  2. 写继承关系
    1. 如果自定义编译时异常,就继承Exception
    2. 如果自定义运行时异常,就继承RuntimeException
  3. 空参构造
  4. 带参构造

范例

//编译时异常
public class 自定义异常类 extends Exception {

    public OurException() {
    }

    public OurException(String message) {
        super(message);
    }
}

//运行时异常
public class 自定义异常类 extends RuntimeException{

}

意义

让程序的报错更加的见名知意

Lambda表达式

作用

简化程序中匿名内部类代码的书写

前提

只针对函数式接口进行代码编写

函数式接口

特点

接口中仅有一个抽象方法(允许有静态方法,默认方法,私有方法)

@FunctionalInterface  //Java对函数式接口制定的注解
public interface Comparator<T> {
  ...
}

语法

(参数,...)->{
  //方法体代码(要做什么事情)
}
  • ():代表一个方法,里面的参数为方法的参数
  • ->:指向要做的事情
  • {}:功能代码(具体要做的事情)

省略模式

  1. 可以省略参数类型:要么全都省略,要么全都保留
  2. 如果参数仅有一个时,可以省略小括号
  3. 如果代码块中仅有一行代码时,可以省略:大括号,分号,return

和匿名对象类的区别

Snipaste_2024-04-01_21-59-05.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/509708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection

文章目录 RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection问题笛卡尔坐标结构图Meta-Kernel Convolution RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection 论文&#xff1a;https://arxiv.org/pdf/2103.10039.pdf 代码&…

docker--部署 (超详版) (五)

环境准备&#xff1a;docker&#xff0c;mysql&#xff0c;redis&#xff0c;镜像&#xff0c;nginx 把虚拟机打开&#xff0c;连接xshell&#xff0c;参考博客&#xff1a; https://blog.csdn.net/m0_74229802/article/details/136965820?spm1001.2014.3001.5501 一&#x…

什么是过载

宇航员相关知识会涉及到过载&#xff0c;导弹相关知识也会涉及到过载&#xff0c;如导弹的过载加速度&#xff0c;什么是过载呢&#xff1f;博主从B站上看到一UP主讲的很好&#xff0c; 该up主视频链接&#xff1a; 过载是什么_哔哩哔哩_bilibili 内容截图如下&#xff1a;

vue+element ui实现表单组件的封装

效果图&#xff1a; 主要是使用vue elmentUi 的from的基础上进行封装 使用改组件&#xff0c;是需要自定义从父组件传入一下字段表单字段 export const topicTypeMainTaskEdit: any new Map([// 主任务可编辑状态[feasibleInstructions, // 督办件[{value: documentNum…

B端:别看分页你天天用,你未必能摸清分页门道,一文告诉你.

在B端系统中&#xff0c;分页的作用是在处理大量数据时&#xff0c;将数据分成多个页面进行展示&#xff0c;以提高系统的性能和用户体验。 分页可以有效减少单个页面加载的数据量&#xff0c;加快页面加载速度&#xff0c;减少服务器和客户端的压力&#xff0c;并且方便用户浏…

vue使用i18n

&#x1f388;个人主页&#xff1a;靓仔很忙i &#x1f4bb;B 站主页&#xff1a;&#x1f449;B站&#x1f448; &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;前端 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#x…

如何使用cobbler定制安装

cobbler批量安装 客户端安装 新建虚拟机从pxe启动&#xff0c;若出现以下界面则表示成功&#xff1a; uos9安装 rockylinux9安装&#xff1a; 切换镜像 [rootcjy ~]# umount /mnt [rootcjy ~]# mount /dev/cdrom /mnt 升级 [rootcjy ~]# cobbler signature update task sta…

【御控物联】JavaScript JSON结构转换(16):对象To数组——综合应用

文章目录 一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

Redis数据库常用命令和数据类型

文章目录 一、Redis数据库常用命令1、set/get2、keys3、exists4、del5、type6、rename6.1 重命名6.2 覆盖 7、renamenx8、dbsize9、密码设置10、密码验证11、查看密码12、取消密码13、Redis多数据库常用命令13.1 多数据库间切换13.2 多数据库间移动数据13.3 清除数据库数据 二、…

可视化大屏的行业应用(1):智慧生产和智能制造

可视化大屏在生产制造行业中具有重要的应用价值&#xff0c;主要表现在以下几个方面&#xff1a; 生产监控&#xff1a;可视化大屏可以实时显示生产线的运行状态和生产数据&#xff0c;包括设备运行状态、生产效率、产品质量等&#xff0c;帮助管理人员及时监控生产情况&#…

【新手适用】手把手教你从零开始实现一个基于Pytorch的卷积神经网络CNN三: 如何验证和测试模型

【新手适用】手把手教你从零开始实现一个基于Pytorch的卷积神经网络CNN二&#xff1a; 如何训练模型&#xff0c;内附详细损失、准确率、均值计算-CSDN博客 从零开始实现一个基于Pytorch的卷积神经网络 - 知乎 (zhihu.com) 1 初始化、导入模型和数据集 新建一个test.py文件&a…

Android的图片加载框架

Android的图片加载框架 为什么要使用图片加载框架&#xff1f;图片加载框架1. Universal Image Loader [https://github.com/nostra13/Android-Universal-Image-Loader](https://github.com/nostra13/Android-Universal-Image-Loader)2. Glide [https://muyangmin.github.io/gl…

SWM341系列SDRAM应用

SWM341系列SDRAM应用 1、不同的时钟频率下&#xff0c;SDRAM的初始化参数设置 现象&#xff1a;驱屏应用&#xff0c;显示一段时间后出现卡住的现象 分析&#xff1a;SDRAM的初始 化参数优化 主频150Mhz,建议配置CASL 3&#xff0c;TRFC ≥8。 主频100Mhz,ClkDiv可配置为1…

低压500kW 发电机组测试交流干式负载箱的工作方式

低压500kW发电机组测试交流干式负载箱是一种专门用于测试发电机组性能的设备&#xff0c;其主要功能是在发电机组运行过程中&#xff0c;通过模拟实际负载情况&#xff0c;对发电机组的输出功率、电压、电流等参数进行实时监测和调整&#xff0c;以确保发电机组在各种工况下的稳…

手写瀑布流

之前用vue-masonry实现瀑布流 <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><meta name"viewport" content"widthdevice-width,initial-scale1,maximum-sc…

算法——矩阵,被围绕的区域

. - 力扣&#xff08;LeetCode&#xff09; 最开始也是考虑使用dfs&#xff0c;对于矩阵中的每个点&#xff0c;如果能到达边界的O&#xff0c;则跳过继续dfs。否则如果上下左右四个方向都无法到达边界的O&#xff0c;则说明当前的无法到达&#xff0c;在一个set中记录他的行数…

AcWing刷题-游戏

游戏 DP l lambda: [int(x) for x in input().split()]n l()[0] w [0] while len(w) < n:w l()s [0] * (n 1) for i in range(1, n 1): s[i] s[i - 1] w[i]f [[0] * (n 1) for _ in range(n 1)]for i in range(1, n 1): f[i][i] w[i]for length in range(2, …

WordPress外贸建站Astra免费版教程指南(2024)

在WordPress的外贸建站主题中&#xff0c;有许多备受欢迎的主题&#xff0c;如Avada、Astra、Hello、Kadence等最佳WordPress外贸主题&#xff0c;它们都能满足建站需求并在市场上广受认可。然而&#xff0c;今天我要介绍的是一个不断颠覆建站人员思维的黑马——Astra主题。 原…

Java

1.学生和老师都会有work方法&#xff0c;学生的工作是学习&#xff0c;老师的工作是教书&#xff0c;我利用了一个接口来实现&#xff1b; 2.同时&#xff0c;老师和学生都是人&#xff0c;并且都有姓名&#xff0c;姓名&#xff0c;年龄和身高等特征&#xff0c;我用了一个继承…

Python基于PyQt5制作的一个上位机软件,用来控制一个Arduino四自由度机械臂

PyQt_Arduino 介绍 用PyQt5制作的一个上位机软件&#xff0c;用来控制一个Arduino四自由度机械臂。当然&#xff0c;为了扩展的需要&#xff0c;界面是按照六自由度机械臂制作的。 开发环境 系统&#xff1a; windows10 处理器: Intel Core™i7-8550U CPU 1.8GHz 2.00GHz …