异常,Lambda表达式

news2024/10/5 15:05:24

文章目录

  • 异常
    • 介绍
    • 存在形式
    • 程序中异常发生后的第一反应
    • 体系
    • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2_3.Linux系统中的日志管理

# 1.journald # 服务名称&#xff1a;systemd-journald.service journalctl 默认日志存放路径&#xff1a; /run/log &#xff08;1&#xff09; journalctl命令的用法 journalctl -n 3 ##日志的最新3条--since "2020-05-01 11:00:00" ##显示11&#xff1a;00后的日…

Mysql的高级语句3

目录 一、子查询 注意&#xff1a;子语句可以与主语句所查询的表相同&#xff0c;但是也可以是不同表。 1、select in 1.1 相同表查询 1.2 多表查询 2、not in 取反&#xff0c;就是将子查询结果&#xff0c;进行取反处理 3、insert into in 4、update…

LeetCode226:反转二叉树

题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 解题思想 使用前序遍历和后序遍历比较方便 代码 class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root nullptr) return root;swap(root->left, root…

vue 文件下载

1.返回路径下载 注: 针对一些浏览器无法识别的文件格式&#xff08;如pdf、xls、ppt&#xff09;。可以直接在地址栏上输入URL即可触发浏览器的下载功能。 情况1 //地址栏输入文件URLwindow.location.href URLwindow.open(URL) 注:该方式将下载逻辑放在后端处理&#xff0c…

Learning Discriminative Representations for Skeleton Based Action Recognition

标题&#xff1a;基于骨架的动作识别的学习判别性表示 原文链接&#xff1a;Learning Discriminative Representations for Skeleton Based Action Recognition (thecvf.com) 源码链接&#xff1a;https://github.com/zhysora/FR-Head 发表&#xff1a;CVPR 摘要 最近&…

后端返还二进制excl表格数据时候,如何实现在前端下载表格功能及出现表格打开失败的异常处理。

背景&#xff1a; 后端返还一个二进制流的excl表格数据&#xff0c;前端需要对其解析&#xff0c;然后可提供给客户进行下载。 思路&#xff1a;把二进制流数据转换给blob对象&#xff0c;然后利用a标签进行前端下载。 代码&#xff1a; 后端返还 类似如下的数据 前端代码…

OpenHarmony实战:Hilog组件在交互时应用指南

一、OpenHarmony hilog 组件工具概述 hilog 是 OpenHarmony 日志系统&#xff0c;提供给系统框架、服务、以及应用打印日志&#xff0c;记录用户操作、系统运行状态等。适用于 OpenHarmony 应用、硬件开发及测试人员,是每个开发人员的必备、入门工具。 hilog 日志查看命令行工…

3.28号系统移植

系统移植就是给开发板搭建一个linux操作系统 1. 安装tftp服务器 tftp服务器作用&#xff1a;将ubuntu中指定的文件下载到开发板中 安装步骤 1. 首先需要保证ubuntu组网成功 2. 安装tftp服务器安装包 3. 在家目录下&#xff0c;创建tftpboot文件夹&#xff0c;并且添加最高…

5.11 Vue配置Element UI框架

Vue配置Element UI框架 目录一、 概要二、 开发前准备1. 搭建Vue框架 三、 安装 Element UI1. 引入 Element UI 依赖2. 在 main.js 中引入 Element UI 和相关样式&#xff1a;3. 按需引入(非必须, 可忽略)4. 简单构建一个主页面 目录 一、 概要 Element UI 是一个基于 Vue.js …

【算法】01背包问题(代码+详解+练习题)

题目&#xff1a; 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整…

代码随想录算法训练营第二十七天|131.分割回文串、93.复原IP地址

文档链接&#xff1a;https://programmercarl.com/ LeetCode131.分割回文串 题目链接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning/ 思路&#xff1a;把回溯的树画出来就好很多。startIndex用来控制切割的位置 例如对于字符串abcdef&#xff1a; 组…

【T5模型源码】深入T5模型:源码解析与实现细节

【T5模型源码】深入T5模型&#xff1a;源码解析与实现细节 文章脉络 模型结构图 类关系分析 简单类的源码 T5LayerNorm T5DenseActDense T5DenseGatedActDense T5LayerFF 复杂类的源码 常见参数介绍 最难的T5Attention源码 常见面试提问 总结 我们在日常业务中可能…

上传本地项目到gitee仓库(简单快速)

目录 前提准备 1.已经下载好git Bash 2.已经注册好gitee账号 3.在gitee上新建一个仓库 上传项目到gitee 1.找到本地需要传的文件目录 2.在本页面右键空白处&#xff0c;点击Git Bash Here 3.检查gitee账号是否存在或是否正确 4.若不正确或不存在则配置用户名和邮箱 5…

Matlab|【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 基本知识 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》&#xff0c;以IEEE33配电网为分析对象&#xff0c;…

OceanMind海睿思数据工程2.0重磅发布,赋能企业“韧性”成长!

近日&#xff0c;由江苏省工业和信息化厅指导&#xff0c;江苏省企业信息化协会主办的 2024制造业数字化转型南京高峰论坛 圆满落幕。 中新赛克海睿思 作为长三角地区数字化转型优秀厂商代表受邀参会&#xff0c;并发布全新数据工程系列产品。中新赛克副总兼大数据产品线总经理…

python print用法

1.输出字符串换行 输出结果会换行&#xff0c;默认自带换行 print(111) print(0) 2.末尾插入字符串或去除换行 末尾只能插入字符串&#xff0c;不能是其他类型 print(111,end0) print(0) 3.变量&#xff0c;字符串混合输入 没有必要什么都学&#xff0c;好用的常用的学一…

设计定时任务实现数据同步的最佳实践

✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、选择合适的定时任务框架 Quartz Spring 的 TaskScheduler JDK 的 ScheduledE…

记录何凯明在MIT的第一堂课:神经网络发展史

https://www.youtube.com/watch?vZ5qJ9IxSuKo 目录 表征学习 主要特点&#xff1a; 方法和技术&#xff1a; LeNet 全连接层​ 主要特点&#xff1a; 主要特点&#xff1a; 网络结构&#xff1a; AlexNet 主要特点&#xff1a; 网络结构&#xff1a; Sigmoid Re…

SDWebImage源码解析---疑难问题解答

SDWebImage的简单流程图&#xff1a; 上图大致流程是对的&#xff0c;有几个没写到的地方&#xff1a; 加载沙盒中对应的图片后&#xff0c;不仅要显示&#xff0c;而且要把图片缓存到内存中下载完毕后&#xff0c;有一个异步解码的过程&#xff0c;没体现出来 网上有大佬做了…

【JAVASE】学习数组的定义与使用

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a; 再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1. 理解数组基本概念 2. 掌握数组的基本用法…