林浩然与杨凌芸的Java异常处理大冒险

在这里插入图片描述

林浩然与杨凌芸的Java异常处理大冒险

Lin Haoran and Yang Lingyun’s Java Exception Handling Adventure


在一个阳光明媚的午后,编程世界的英雄——林浩然和杨凌芸坐在Java王国的咖啡馆里,一边品尝着香醇的代码咖啡,一边探讨着他们的最新挑战——Java异常处理。

On a sunny afternoon, the heroes of the programming world—Lin Haoran and Yang Lingyun—sit in the coffeehouse of the Java Kingdom, savoring the rich brew of code coffee and discussing their latest challenge: Java exception handling.

1. 异常类型:生活的调味料

1. Exception Types: The Spice of Life

林浩然笑眯眯地拿起一块巧克力蛋糕,比喻道:“你看这蛋糕,就像我们Java中的异常类型。有甜蜜的NullPointerException(空指针异常),就像是蛋糕上的糖霜,看似诱人却可能让你‘甜蜜’中带着苦涩;还有IntegerOverflowException(整数溢出异常),就像蛋糕太大吃不下,内存空间不足时也会闹腾一番。”

Lin Haoran picks up a piece of chocolate cake with a smile, likening it to the exception types in Java. He says, “Look at this cake, just like our Java exception types. There’s the sweet NullPointerException, like frosting on the cake—appealing at first but may leave you ‘sweet’ with bitterness. Then there’s IntegerOverflowException, like a cake too big to finish, causing a commotion when there’s not enough memory space.”

2. 异常捕获:戴上侦探帽

2. Exception Handling: Donning the Detective Hat

“每次遇到异常,我们都得像福尔摩斯一样去捕获它。”杨凌芸说着,挥舞着手中的虚拟放大镜,“用try-catch块就好比在程序运行现场布下天罗地网,一旦出现异常,立马就能把它逮住,并进行妥善处理。”

“Every time we encounter an exception, we have to catch it like Sherlock Holmes,” says Yang Lingyun, waving a virtual magnifying glass. “Using a try-catch block is like setting a trap at the scene of the program, ready to catch the exception immediately and handle it properly.”

3. 抛出异常:传递小纸条

3. Throwing Exceptions: Passing Notes

“抛出异常呢,”林浩然故作神秘地从口袋里掏出一个写着“error”的小纸条扔向空中,“就好比我在这里把问题写在纸条上,然后通过throw new ExceptionType("Error message");这种方式扔给上一层方法。嘿,凌芸接住了没?”

“Throwing exceptions,” Lin Haoran playfully takes out a note with “error” written on it from his pocket and tosses it into the air. “It’s like me writing the problem on this note and then throwing it to the upper method using throw new ExceptionType("Error message");. Hey, Lingyun, did you catch it?”

4. throw关键字:游戏中的暂停键

4. throw Keyword: The Pause Button in the Game

“别忘了那个神奇的throw关键字,”杨凌芸接过话茬,仿佛手握游戏控制器,“它就是我们在编程游戏中按下暂停键的时候,告诉Java游戏引擎:‘喂,这里有个问题需要你注意!’”

“Don’t forget that magical throw keyword,” Yang Lingyun takes the conversation forward, as if holding a game controller. “It’s like pressing the pause button in a programming game, telling the Java game engine, ‘Hey, there’s an issue here that needs your attention!’”

5. 自定义异常:特制警告牌

5. Custom Exceptions: Tailored Warning Signs

最后,他们聊到了自定义异常。“有时候,系统内置的异常类型并不能准确描述我们的特殊情况,这就需要用到自定义异常了。”林浩然边说边拿出一张定制的红色警告牌,“比如,我们创建个名为InvalidMagicSpellException的类,用来表示魔法咒语错误,这样一来,别人一看就知道我们遇到了什么麻烦事儿。”

Finally, they talk about custom exceptions. “Sometimes, the built-in exception types can’t precisely describe our specific situations, so we need to use custom exceptions,” says Lin Haoran, taking out a custom red warning sign. “For example, we create a class named InvalidMagicSpellException to represent magic spell errors. This way, others can easily see what kind of trouble we’ve encountered.”

经过这次生动有趣的讨论,林浩然和杨凌芸不仅掌握了Java异常处理的各种技巧,更是在笑声中加深了对编程世界复杂性的理解。他们携手在Java王国中继续探索,让每一次代码之旅都充满了智慧与幽默。

After this lively and amusing discussion, Lin Haoran and Yang Lingyun not only mastered various techniques of Java exception handling but also deepened their understanding of the complexity of the programming world amid laughter. Hand in hand, they continue to explore in the Java Kingdom, making every code journey filled with wisdom and humor.


1. 异常类型:生活的调味料

举例说明:

public class ExceptionDemo {public static void main(String[] args) {String str = null;try {// 这里模拟了空指针异常,就像巧克力蛋糕上的糖霜,看似甜蜜却可能导致错误System.out.println(str.length());} catch (NullPointerException e) {System.out.println("哎呀,你尝试访问的字符串为空,这可真是个甜蜜的陷阱!");}int maxInt = Integer.MAX_VALUE;try {// 这里模拟了整数溢出异常,就像蛋糕太大吃不下,内存空间不足时抛出的问题int overflow = maxInt + 1;} catch (ArithmeticException e) {System.out.println("哇哦,你的数字太大了,连Java王国的内存都装不下了!");}}
}

2. 异常捕获:戴上侦探帽

举例说明:

public class ExceptionDetective {public static void riskyMethod() throws IOException {// 模拟可能出现异常的操作,如读取文件File file = new File("non_existent_file.txt");FileInputStream fis = new FileInputStream(file);}public static void main(String[] args) {try {// 福尔摩斯般的异常捕获,用try-catch布下天罗地网riskyMethod();} catch (IOException e) {System.out.println("侦查结果:找到了异常!文件不存在。");e.printStackTrace();}}
}

3. 抛出异常:传递小纸条

举例说明:

public class ExceptionThrower {public void validateAge(int age) throws IllegalArgumentException {if (age < 0 || age > 150) {// 抛出异常就像传递小纸条,告知调用者出现了问题throw new IllegalArgumentException("年龄超出合理范围,必须在0到150之间!");}System.out.println("年龄有效!");}public static void main(String[] args) {ExceptionThrower et = new ExceptionThrower();try {// 接收并处理“小纸条”(异常)et.validateAge(200);} catch (IllegalArgumentException e) {System.out.println("接收到小纸条: " + e.getMessage());}}
}

4. throw关键字:游戏中的暂停键

举例说明:

public class ExceptionGame {public void checkCondition(boolean condition) throws IllegalStateException {if (!condition) {// 使用throw关键字像按下暂停键一样通知游戏引擎(Java虚拟机)出现问题throw new IllegalStateException("游戏状态非法,请检查条件是否满足!");}System.out.println("游戏可以继续进行!");}public static void main(String[] args) {ExceptionGame game = new ExceptionGame();try {game.checkCondition(false);} catch (IllegalStateException e) {System.out.println("游戏暂停,问题提示:" + e.getMessage());}}
}

5. 自定义异常:特制警告牌

举例说明:

class InvalidMagicSpellException extends Exception {public InvalidMagicSpellException(String message) {super(message);}
}public class MagicWizard {public void castSpell(String spell) throws InvalidMagicSpellException {// 如果咒语无效,则抛出自定义异常if (!isValidSpell(spell)) {throw new InvalidMagicSpellException("魔法咒语错误,请检查后重新施法!");}System.out.println("成功施放咒语: " + spell);}private boolean isValidSpell(String spell) {// 省略实际的校验逻辑...return false; // 假设此处返回false以触发异常}public static void main(String[] args) {MagicWizard wizard = new MagicWizard();try {wizard.castSpell("无效咒语");} catch (InvalidMagicSpellException e) {System.out.println("警示: " + e.getMessage());}}
}

1. Exception Types: Seasoning of Life

Example:

public class ExceptionDemo {public static void main(String[] args) {String str = null;try {// Simulating a NullPointerException, like frosting on a chocolate cake—seemingly sweet but may lead to an errorSystem.out.println(str.length());} catch (NullPointerException e) {System.out.println("Oops, you attempted to access a null string, a sweet trap indeed!");}int maxInt = Integer.MAX_VALUE;try {// Simulating an IntegerOverflowException, like a cake too big to finish, causing issues when memory space is insufficientint overflow = maxInt + 1;} catch (ArithmeticException e) {System.out.println("Wow, your number is too large, even Java Kingdom's memory can't handle it!");}}
}

2. Exception Handling: Putting on the Detective Hat

Example:

public class ExceptionDetective {public static void riskyMethod() throws IOException {// Simulating an operation that may cause an exception, such as reading a fileFile file = new File("non_existent_file.txt");FileInputStream fis = new FileInputStream(file);}public static void main(String[] args) {try {// Sherlock Holmes-like exception handling, setting a trap with try-catchriskyMethod();} catch (IOException e) {System.out.println("Investigation result: Exception found! File does not exist.");e.printStackTrace();}}
}

3. Throwing Exceptions: Passing Notes

Example:

public class ExceptionThrower {public void validateAge(int age) throws IllegalArgumentException {if (age < 0 || age > 150) {// Throwing an exception is like passing a note, informing the caller that a problem has occurredthrow new IllegalArgumentException("Age out of reasonable range, must be between 0 and 150!");}System.out.println("Age is valid!");}public static void main(String[] args) {ExceptionThrower et = new ExceptionThrower();try {// Receiving and handling the "note" (exception)et.validateAge(200);} catch (IllegalArgumentException e) {System.out.println("Received a note: " + e.getMessage());}}
}

4. throw Keyword: Pause Button in the Game

Example:

public class ExceptionGame {public void checkCondition(boolean condition) throws IllegalStateException {if (!condition) {// Using the throw keyword is like pressing the pause button, notifying the game engine (Java virtual machine) of a problemthrow new IllegalStateException("Game state is illegal, please check if conditions are met!");}System.out.println("Game can continue!");}public static void main(String[] args) {ExceptionGame game = new ExceptionGame();try {game.checkCondition(false);} catch (IllegalStateException e) {System.out.println("Game paused, issue alert: " + e.getMessage());}}
}

5. Custom Exceptions: Tailored Warning Signs

Example:

class InvalidMagicSpellException extends Exception {public InvalidMagicSpellException(String message) {super(message);}
}public class MagicWizard {public void castSpell(String spell) throws InvalidMagicSpellException {// If the spell is invalid, throw a custom exceptionif (!isValidSpell(spell)) {throw new InvalidMagicSpellException("Invalid magic spell, please check and recast!");}System.out.println("Spell cast successfully: " + spell);}private boolean isValidSpell(String spell) {// Omitting the actual validation logic...return false; // Assume it returns false here to trigger the exception}public static void main(String[] args) {MagicWizard wizard = new MagicWizard();try {wizard.castSpell("InvalidSpell");} catch (InvalidMagicSpellException e) {System.out.println("Warning: " + e.getMessage());}}
}

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

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

相关文章

Excel——高级筛选匹配条件提取数据

一、筛选多条件 Q&#xff1a;筛选多个条件&#xff0c;并将筛选出的内容复制到其他区域 点击任意一个单元格 点击【数据】——【筛选】——【高级筛选】 选择【将筛选结果复制到其他位置】——在【列表区域】 鼠标选择对应的区域位置&#xff0c;条件区域一定要单独写出来&a…

ChatGPT学习第一周

&#x1f4d6; 学习目标 掌握ChatGPT基础知识 理解ChatGPT的基本功能和工作原理。认识到ChatGPT在日常生活和业务中的潜在应用。 了解AI和机器学习的基本概念 获取人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;的初步了解。理解这些技术是如何支撑…

Flink从入门到实践(一):Flink入门、Flink部署

文章目录 系列文章索引一、快速上手1、导包2、求词频demo&#xff08;1&#xff09;要读取的数据&#xff08;2&#xff09;demo1&#xff1a;批处理&#xff08;离线处理&#xff09;&#xff08;3&#xff09;demo2 - lambda优化&#xff1a;批处理&#xff08;离线处理&…

【机器学习】数据清洗之识别缺失点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

[神奇代码岛】皮肤功能使用

前言 最近有很多人在制作地图的时候&#xff0c;因该会用到皮肤的功能&#xff0c;但是皮肤操作只知道UI操作&#xff0c;但缺点是&#xff0c;只能设置地图默认皮肤&#xff0c;根本都做不到想要的什么皮肤购买功能&#xff0c;自主穿戴功能&#xff0c;而API官方又放在非常隐…

老胡的周刊(第128期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 coze-discord-proxy[2] 代理 Discord-Bot 对…

微服务OAuth 2.1扩展额外信息到JWT并解析(Spring Security 6)

文章目录 一、简介二、重写UserDetailsService三、Controller解析JWT获取用户信息四、后记 一、简介 VersionJava17SpringCloud2023.0.0SpringBoot3.2.1Spring Authorization Server1.2.1Spring Security6.2.1mysql8.2.0 Spring Authorization Server 使用JWT时&#xff0c;前…

PbootCMS采集插件使用教程

这篇Pboot采集教程教你使用PbootCMS采集插件&#xff0c;自动批量采集网页文章数据&#xff0c;并发布到PbootCMS系统&#xff0c;快速丰富网站的内容。 1. 下载并安装PbootCMS采集插件 1-1&#xff09;PbootCMS采集插件免费下载&#xff1a;Pboot采集插件-PbootCMS发布模块下…

【Docker】私有仓库

目录 1.搭建 2. 上传镜像 3.拉取镜像 1.搭建 1.拉取私有仓库的镜像 docker pull registry 2.创建私有仓库容器 docker run -id --nameregistry -p 5000:5000 registry 3.打开浏览器,输入地址&#xff08;http:私有仓库服务器ip:5000/v2/_catalog&#xff09; 出现如图表示私…

如何运行心理学知识(心流)来指导工作和生活

如何运用心流来指导工作和生活 如何联系我 作者&#xff1a;鲁伟林 邮箱&#xff1a;thinking_fioa163.com或vlinyes163.com GitHub&#xff1a;https://github.com/thinkingfioa/ReadingSummary 版权声明&#xff1a;文章和记录为个人所有&#xff0c;如果转载或个人学习…

TDengine用户权限管理

Background 官方文档关于用户管理没有很详细的介绍&#xff0c;只有零碎的几条&#xff0c;这里记录下方便后面使用。官方文档&#xff1a;https://docs.taosdata.com/taos-sql/show/#show-users 1、查看用户 show users;super 1&#xff0c;表示超级用户权限 0&#xff0c;表…

MySQL用心总结

大家好&#xff0c;好久不见&#xff0c;今天笔者用心一步步写一份mysql的基础操作指南&#xff0c;欢迎各位点赞收藏 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath mysqld_bin_path(注意&#xff1a;等号与值之间有空格) mysql -h 地址 -…

kmeans聚类选择最优K值python实现

Kmeans算法中K值的确定是很重要的。 下面利用python中sklearn模块进行数据聚类的K值选择 数据集自制数据集&#xff0c;格式如下&#xff1a; 维度为3。 ①手肘法 手肘法的核心指标是SSE(sum of the squared errors&#xff0c;误差平方和)&#xff0c; 其中&#xff0c;Ci是第…

【数据分享】1929-2023年全球站点的逐年平均降水量(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;说到常用的降水数据&#xff0c;最详细的降水数据是具体到气象监测站点的降水数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全…

华为视频监控接入到视频监控平台 (华为网路监控摄像机IPC和华为视频节点设备VCN)

目 录 一、设备介绍 1.1 华为VCN介绍 1.2 AS-V1000视频监控平台介绍 1.3 平台服务器配置说明 二、安装、配置HW_IVS软件 2.1下载安装HW_IVS软件 2.2登录HW_IVS 2.3共享到外域 三、配置华为外域参数 3.1 PCG模块设置 3.2通信协议GBT28181配置 3.3传…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(二)

三、简配版集群&#xff0c;适用于demo环境 1.集群架构设计 主机名角色配置(核数&#xff0c;内存&#xff0c;磁盘)MasterRKE,controlplane,etcd,worker,rancher-master2C 8G 40GSlaver1controlplane,worker,rancher-master2C 8G 40GSlaver2controlplane,worker,rancher-mas…

[office] 怎么在Excel2003菜单栏自定义一个选项卡 #其他#微信#知识分享

怎么在Excel2003菜单栏自定义一个选项卡 怎么在Excel2003菜单栏自定义一个选项卡 ①启动Excel2003&#xff0c;单击菜单栏--工具--自定义。 ②在自定义界面&#xff0c;我们单击命令标签&#xff0c;在类别中选择新菜单&#xff0c;鼠标左键按住新菜单&#xff0c;拖放到菜单栏…

MATLAB环境下一维时间序列信号的同步压缩小波包变换

时频分析相较于目前的时域、频域信号处理方法在分析时变信号方面&#xff0c;其主要优势在于可以同时提供时域和频域等多域信号信息&#xff0c;并清晰的刻画了频率随时间的变化规律&#xff0c;已被广泛用于医学工程、地震、雷达、生物及机械等领域。 线性时频分析方法是将信…

tee漏洞学习-翻译-2:探索 Qualcomm TrustZone的实现

原文&#xff1a;http://bits-please.blogspot.com/2015/08/exploring-qualcomms-trustzone.html 获取 TrustZone image 从两个不同的位置提取image 从手机设备本身从google factory image 已经root的Nexus 5设备&#xff0c;image存储在eMMC芯片上&#xff0c;并且eMMC芯片…

探索Spring Validation:优雅实现后端数据验证的艺术

在现代Web应用开发中&#xff0c;数据验证是一项至关重要的任务&#xff0c;确保应用程序接收到的用户输入符合预期规范&#xff0c;不仅能够提高系统的健壮性&#xff0c;也能有效防止潜在的安全漏洞。Spring Framework通过其内置的Spring Validation模块&#xff0c;为我们提…