try-catch-finally 捕获异常不在catch里抛出;循环遍历对象生成任务,捕获异常对象不抛出,不影响其他正常对象生成任务

场景:一个模板绑定多个对象,要对每个对象生成任务。捕获生成任务过程中的异常,但是不抛出,只是用日志记录。这样做目的:循环遍历对象生成任务时,异常对象数据生成任务时发生异常只是导致自己生成任务失败,但不会影响到其他正常对象数据生成任务。例如对象1数据异常,那就捕获对象1的异常信息但不抛出(一旦抛出就会导致后面的对象生成任务失败),只是对象1生成不了任务。对象2,对象3是正常的,还是可以正常生成任务。

一、举例

//1、try-catch 直接捕获异常不在catch里抛出,会执行try-catch之外的代码
public class NullPointerExample {public static void main(String[] args) {String str = null;try {// 尝试执行可能抛出空指针异常的代码System.out.println(str.length()); // 这里会抛出NullPointerExceptioncreateTask();//不会执行生成任务的代码} catch (Exception e) {// 捕获到空指针异常后,在这里处理异常System.out.println("捕获到空指针异常: " + e.getMessage());}// try-catch之外的代码System.out.println("在catch里异常没有被抛出,程序能继续执行...");}
}

在这里插入图片描述

//2、try-catch直接捕获异常在catch里抛出,不会执行try-catch之外的代码
public class NullPointerExample {public static void main(String[] args) {String str = null;try {// 尝试执行可能抛出空指针异常的代码System.out.println(str.length()); // 这里会抛出NullPointerExceptioncreateTask();//不会执行生成任务的代码} catch (Exception e) {// 捕获到空指针异常后,在这里处理异常System.out.println("捕获到空指针异常: " + e.getMessage());throw e; //这里直接抛出异常,那么try-catch之外的代码就不能执行了}// try-catch之外的代码System.out.println("在catch里异常被抛出,程序不能继续执行...");}
}

在这里插入图片描述

//3、在catch里异常被抛出,finally里的代码能执行,try-catch-finally之外的后续代码不能执行
public class NullPointerExample {public static void main(String[] args) {String str = null;try {// 尝试执行可能抛出空指针异常的代码System.out.println(str.length()); // 这里会抛出NullPointerExceptioncreateTask();//不会执行生成任务的代码} catch (Exception e) {// 捕获到空指针异常后,在这里处理异常System.out.println("捕获到空指针异常: " + e.getMessage());throw e; //这里直接抛出异常,那么try-catch-finally之外的后续代码不能执行} finally {System.out.println("在catch里异常被抛出,finally里的代码能执行,try-catch-finally之外的后续代码不能执行...");}// try-catch-finally之外的后续代码System.out.println("在catch里异常被抛出,程序不能继续执行...");}
}

在这里插入图片描述

//4.在catch里异常不被抛出,finally里的代码能执行,try-catch-finally之外的后续代码能执行
public class NullPointerExample {public static void main(String[] args) {String str = null;try {// 尝试执行可能抛出空指针异常的代码System.out.println(str.length()); // 这里会抛出NullPointerExceptioncreateTask();//不会执行生成任务的代码} catch (Exception e) {// 捕获到空指针异常后,在这里处理异常System.out.println("捕获到空指针异常: " + e.getMessage());} finally {System.out.println("在catch里异常不被抛出,finally里的代码能执行,try-catch-finally之外的后续代码能执行...");}// try-catch-finally之外的后续代码System.out.println("在catch里异常不被抛出,程序能继续执行...");}
}

在这里插入图片描述

二.、总结

1、无论catch里的异常有没有被抛出,finally里的代码都能执行;
2、catch里的异常被抛出,try-catch之外或者try-catch-finally之外的代码都不能执行;
3、catch里的异常不被抛出,try-catch之外或者try-catch-finally之外的代码都能执行,例如循环遍历对象生成任务,异常对象捕获但不抛出异常,那该异常对象就不会生成任务,但是不影响其他正常对象生成任务;
4、try-catch 之间的代码:发生异常就会被捕获,发生异常地方处后面的代码不会被执行,
( 例如: System.out.println(str.length()); //发生异常,后面的 createTask(); 就不会执行生成任务的代码)。

三、循环遍历对象捕获异常举例

//循环遍历对象 举例1:捕获异常没有抛出,person3数据异常,只会导致person3 在try-catch之间的代码不能执行,person1和person2还是能执行try-catch之间的代码;三个都能执行try-catch之外或者try-catch-finally之外的代码。
public class NullPointerExample {public static void main(String[] args) {Person person1 = new Person();Person person2 = new Person();Person person3 = new Person();person1.setId(1);person1.setName("小米");person2.setId(2);person2.setName(null);person3.setId(3);person3.setName("小飞");List<Person> people = new ArrayList<>();people.add(person1);people.add(person2);people.add(person3);for (Person person : people){try {// 尝试执行可能抛出空指针异常的代码System.out.println("person的姓名长度是:"+person.getName().length()); // 这里会抛出NullPointerExceptionSystem.out.println("try-catch之间的代码执行结果:person的id是"+person.getId()+";"+"person的名称是"+person.getName());  //捕获异常后不会执行到这一步} catch (Exception e) {// 捕获到空指针异常后,在这里处理异常System.out.println("捕获到空指针异常: " + e.getMessage());} finally {System.out.println("在catch里异常不被抛出,finally里的代码能执行,try-catch-finally之外的后续代码能执行...");}// try-catch-finally之外的后续代码System.out.println("try-catch或try-catch-finally之外的后续代码:" + person);System.out.println("---------------------------");}}
}

在这里插入图片描述

//循环遍历对象 举例2: 捕获异常直接抛出,person2数据异常,导致person2和后面的person3都不能正常执行try-catch之间的代码、try-catch或try-catch-finally之外的后续代码。
public class NullPointerExample {public static void main(String[] args) {Person person1 = new Person();Person person2 = new Person();Person person3 = new Person();person1.setId(1);person1.setName("小米");person2.setId(2);person2.setName(null);person3.setId(3);person3.setName("小飞");List<Person> people = new ArrayList<>();people.add(person1);people.add(person2);people.add(person3);for (Person person : people){try {// 尝试执行可能抛出空指针异常的代码System.out.println("person的姓名长度是:"+person.getName().length()); // 这里会抛出NullPointerExceptionSystem.out.println("try-catch之间的代码执行结果:person的id是"+person.getId()+";"+"person的名称是"+person.getName());  //捕获异常后不会执行到这一步} catch (Exception e) {// 捕获到空指针异常后,在这里处理异常System.out.println("捕获到空指针异常: " + e.getMessage());throw e;} finally {System.out.println("在catch里异常被抛出,finally里的代码能执行,try-catch-finally之外的后续代码不能执行...");}// try-catch-finally之外的后续代码System.out.println("try-catch或try-catch-finally之外的后续代码:" + person);System.out.println("---------------------------");}}
}

在这里插入图片描述

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

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

相关文章

Mac应用快速启动器:Alfred 5 for Mac 激活版

Alfred 5 是一款专为 macOS 系统设计的效率提升工具。这款软件以其快速启动和高效操作功能著称&#xff0c;通过使用快捷键来呼出输入界面&#xff0c;用户可以快速完成各种任务。 最新版本 Alfred 5.5 引入了一些新功能。其中包括整合了 ChatGPT 和 DALL-E&#xff0c;这意味…

YOLOv8不同位置引入RepVGG重参数化

一、原理解析&#xff1a; 复杂的卷积网络大都具有如下缺点&#xff1a; 复杂的多分支设计&#xff08;如ResNet中的残差相加和Inception中的分支连接&#xff09;使模型难以实现和自定义&#xff0c;降低了推理速度和降低了内存利用率。一些组件&#xff08;例如Xception和Mo…

RedisTemplate、StringRedisTemplate、序列化器配置

Lettuce和Jedis RedisTemplate是SpringDataRedis中对JedisApi的高度封装&#xff0c;提供了Redis各种操作、 异常处理及序列化&#xff0c;支持发布订阅。 首先我们要知道SpringData是Spring中数据操作的模块&#xff0c;包括对各种数据库的集成&#xff0c;比如我们之前学过…

Flutter——全网最精致木鱼APP可上架应用市场

研发背景 工作之余&#xff0c;闲来无事&#xff0c;想着研发一款用户可能会经常用到的一款APP,并且能够顺便掌握一下Flutter Material Design 3 UI&#xff0c;所以就有了这款比较精致的木鱼APP的诞生。 开源代码 https://github.com/z244370114/woodenfish

语义分割介绍

1. 定义 语义指具有人们可用语言探讨的意义&#xff0c;分割指图像分割。 语义分割(semantic segmentation)能够将整张图的每个部分分割开&#xff0c;使每个部分都有一定类别意义&#xff08;语义&#xff09;&#xff0c;让计算机可以理解图像。 语义分割是以描边的形式&…

【初阶数据结构篇】顺序表和链表算法题

文章目录 顺序表算法题移除元素删除有序数组中的重复项合并两个有序数组 链表算法题移除链表元素反转链表链表的中间结点合并两个有序链表链表分割链表的回文结构 顺序表算法题 不熟悉顺序表的可以先了解一下 顺序表实现方法 移除元素 给你一个数组 nums 和一个值 val&#x…

基于Xejen框架实现的C# winform鼠标点击器、电脑按键自动点击器的软件开发及介绍

功能演示 文章开始之前&#xff0c;仍然是先来个视频&#xff0c;以便用户知道鼠标连点器的基本功能 软件主界面 多功能鼠标连点器 快速点击&#xff1a; 痕即鼠标点击器可以设定每秒点击次数&#xff0c;让您轻松应对高频点击需求。 切换时长&#xff0c;即每次动作之间的间…

【安卓】Android Studio简易计算器(实现加减乘除,整数小数运算,正数负数运算)

目录 前言 运算效果 一、创建一个新的项目 二、编写xml文件&#xff08;计算器显示页面&#xff09; 三、实现Java运算逻辑 ​编辑 完整代码 xml文件代码&#xff1a; Java文件代码&#xff1a; 注&#xff1a; 前言 随着移动互联网的普及&#xff0c;手机应用程序已…

Linux_基础

文件结构 Linux的文件结构是一个倒的树状图&#xff0c;具体结构如下&#xff1a; bin&#xff1a;存放二进制文件 boot&#xff1a;存放系统启动文件 dev&#xff1a;存放设备文件 etc&#xff1a;存放系统管理时要用到的各种配置文件和子目录 lib&#xff1a;存放系统动…

【Vue2】3-使用Vue脚手架

目录 初始化脚手架 说明 具体步骤 模板项目的结构 关于不同版本的Vue vue.config.js配置文件 ref属性 配置项props mixin&#xff08;混入&#xff09; 插件 scoped样式 总结TodoList案例 webStorage&#xff08;浏览器本地存储&#xff09; TodoList本地存储 组…

【初阶数据结构篇】栈的实现(赋源码)

文章目录 栈1 代码位置2 概念与结构1.1概念1.2结构 2 栈的实现2.1 栈的初始化和销毁2.1.1 初始化2.1.2 销毁 2.2 栈顶插入和删除数据2.2.1 栈顶插入数据&#xff08;压栈&#xff09;2.2.2 栈顶删除数据&#xff08;出栈&#xff09; 2.3 返回栈顶数据2.4 返回栈的有效数据个数…

嵌入式人工智能(31-基于树莓派4B的气压传感器-BMP280)

1、气压传感器 气压传感器&#xff08;Pressure Sensor&#xff09;是一种用于测量气体压力的装置。它可以将气体压力转换为电信号输出&#xff0c;进而实现对气体压力的监测和控制。气压传感器广泛应用于工业自动化、气象观测、建筑监测、航空航天等领域。 气压传感器的工作…

未来的智能农业:智能合约如何提升农业生产效率和可持续性

随着全球人口的增长和资源的有限性&#xff0c;农业生产面临着越来越大的挑战。如何在提高生产效率的同时保障可持续发展成为全球农业发展的关键问题。智能合约作为一种基于区块链技术的自动化执行合约&#xff0c;正在逐渐应用于农业领域&#xff0c;为农业生产带来了新的机遇…

Redis:RDB持久化

1. 简介 实现类似照片记录效果的方式&#xff0c;就是把某一时刻的数据和状态以文件的形式写到磁盘上&#xff0c;也就是 快照。这样一来即使故障宕机&#xff0c;快照文件也不会丢失&#xff0c;数据的可靠性也就得到了保证。 这个快照文件就称为RDB文件(dump.rdb)&#xff0c…

从代码层面熟悉UniAD,开始学习了解端到端整体架构

0. 简介 最近端到端已经是越来越火了&#xff0c;以UniAD为代表的很多工作不断地在不断刷新端到端的指标&#xff0c;比如最近SparseDrive又重新刷新了所有任务的指标。在端到端火热起来之前&#xff0c;成熟的模块化自动驾驶系统被分解为不同的独立任务&#xff0c;例如感知、…

数据倾斜优化思路实践

数据倾斜&#xff0c;顾名思义&#xff0c;就是在计算过程中数据分散度不够&#xff0c;导致某个节点数据过于集中&#xff0c;从而导致任务执行效率大大降低。参照对比下MR的整体流程和ODPS&#xff0c;整体结合理解数据倾斜发生的几个生命周期的节点&#xff0c;如下图&#…

WordPress设置固定连接后提示404

WordPress设置固定链接后出现404错误通常是因为服务器的伪静态规则没有正确设置。以下是几种常见的服务器环境下的解决方案&#xff1a; 宝塔面板&#xff1a;如果服务器安装了宝塔面板&#xff0c;可以在宝塔面板中选择对应的WordPress伪静态规则并保存设置 。 Apache服务器&a…

Linux——DNS服务搭建

&#xff08;一&#xff09;搭建nginx 1.首先布置基本环境 要求能够ping通外网&#xff0c;有yum源 2.安装nginx yum -y install nginx 然后查看验证 3.修改网页配置文件 修改文件&#xff0c;任意编写内容&#xff0c;然后去物理机测试 &#xff08;二&#xff09;创建一…

C++知识点总结:2.类和对象(自用)

类和对象 1. 类和对象的关系2. 对象指针3. 在堆上创建对象4. 成员访问限定符5. 名字编码&#xff08;Name Mangling&#xff09;6.构造函数7.构造函数的重载8.初始化列表8. 成员变量初始化的顺序&#xff08;通过初始化列表&#xff09;9. 初始化 const 成员变量10. 析构函数11…

【机器学习】pytorch 常用函数解析

目录 一、基本函数介绍 1.1 nn.Module 类 1.2 nn.Embedding 1.3 nn.LSTM 1.4 nn.Linear 1.5 nn.CrossEntropyLoss 1.6 torch.save 1.7 torch.load 1.8 nn.functional 1.9 nn.functional.softmax 本文主要对 pytorch 中用到的函数进行介绍&#xff0c;本文会不断更新~…