林浩然与杨凌芸的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://xiahunao.cn/news/2777594.html

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

相关文章

干掉Xshell,这款开源的终端工具逼格真高!

GitHub 上已经有 53.7k 的 star 了&#xff0c;这说明 Tabby 非常的受欢迎&#xff1a; https://github.com/eugeny/tabby Tabby 是一个高度可定制化的 跨平台的终端工具&#xff0c;支持 Windows、macOS 和 Linux&#xff0c;自带 SFTP 功能&#xff0c;能与 Linux 服务器轻…

Blazor入门100天 : 自做一个支持长按事件的按钮组件

好长时间没继续写这个系列博客了, 不知道大家还记得我吗? 话不多说,直接开撸. 配套源码 demo https://blazor.app1.es/b19LongPressButton ####1. 新建 net8 blazor 工程 b19LongPressButton 至于用什么模式大家各取所需, 我创建的是ssr单工程, 如果大家不小心建立错了按页…

Mysql——更新数据

注&#xff1a;文章参考&#xff1a; MySQL 更新数据 不同条件(批量)更新不同值_update批量更新同一列不同值-CSDN博客文章浏览阅读2w次&#xff0c;点赞20次&#xff0c;收藏70次。一般在更新时会遇到以下场景&#xff1a;1.全部更新&#xff1b;2.根据条件更新字段中的某部分…

[office] excel求乘积的公式和方法 #媒体#笔记#经验分享

excel求乘积的公式和方法 本文首先给出两个常规的excel求乘积的链接&#xff0c;然后再例举了一个文字和数字在同一单元格里面的excel求乘积的公式写法。 excel求乘积的方法分为两种&#xff0c;第一种是直接用四则运算的*来求乘积&#xff0c;另外一种就是使用PRODUCT乘积函数…

【51单片机】自定义静态数码管显示(设计思路&代码演示)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 本章节内容为【实现动静态数码管】项目的第三个模块完整章节&#xff1a;传送门 欢迎订阅 YY滴C专栏&#xff01;更多干货持…

谷歌发布AI新品Gemini及收费模式;宜家推出基于GPT的AI家装助手

&#x1f989; AI新闻 &#x1f680; 谷歌发布AI新品Gemini及收费模式 摘要&#xff1a;谷歌宣布将原有的AI产品Bard更名为Gemini&#xff0c;开启了谷歌的AI新篇章。同时推出了强化版的聊天机器人Gemini Advanced&#xff0c;支持更复杂的任务处理&#xff0c;提供了两个月的…

springboot175图书管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

Netty应用(二) 之 ByteBuffer

目录 4.ByteBuffer详解 4.1 ByteBuffer为什么做成一个抽象类&#xff1f; 4.2 ByteBuffer是抽象类&#xff0c;他的主要实现类为 4.3 ByteBuffer的获取方式 4.4 核心结构&#xff08;NIO的ByteBuffer底层是啥结构&#xff0c;以及读写模式都是根据这些核心结构进行维护的&a…

Netty应用(一) 之 NIO概念 基本编程

目录 第一章 概念引入 1.分布式概念引入 第二章 Netty基础 - NIO 1.引言 1.1 什么是Netty&#xff1f; 1.2 为什么要学习Netty&#xff1f; 2.NIO编程 2.1 传统网络通信中开发方式及问题&#xff08;BIO&#xff09; 2.1.1 多线程版网络编程 2.1.2 线程池版的网络编程…

渗透测试-信息打点与架构分析细节梳理

渗透测试-信息打点与架构分析细节梳理 为了保障信息安全&#xff0c;我在正文中会去除除靶场环境的其他任何可能的敏感信息 什么是网站架构 网站架构包括网站的方方面面&#xff0c;下面是常见的内容&#xff1a; 前端&#xff08;Front-End&#xff09;&#xff1a; 使用Reac…

【C语言】深入理解指针

目录 1.字符指针 2.指针数组 3.数组指针 4.数组传参与指针传参 一维数组传参 二维数组传参 一级指针传参 二级指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针&#xff08;了解即可&#xff09; 8.回调函数 回调函数的应用&#xff1a;库函数qsort …

ANSI Escape Sequence 下落的方块

ANSI Escape Sequence 下落的方块 1. ANSI Escape 的用途 无意中发现 B站有人讲解&#xff0c; 完全基于终端实现俄罗斯方块。 基本想法是借助于 ANSI Escape Sequence 实现方方块的绘制、 下落动态效果等。对于只了解 ansi escape sequence 用于 log 的颜色打印的人来说&…

webgis后端安卓系统部署攻略

目录 前言 一、将后端项目编译ARM64 二、安卓手机安装termux 1.更换为国内源 2.安装ssh远程访问 3.安装文件远程访问 三、安装postgis数据库 1.安装数据库 2.数据库配置 3.数据导入 四、后端项目部署 五、自启动设置 总结 前言 因为之前一直做的H5APP开发&#xf…

春节特辑 | 催婚大作战与奇妙相亲记

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 催催催&#xff0c;一到春节&#xff0c;七大姑八大姨都来纷纷关心“怎么样了&#xff1f;还单着呢&…

C++类和对象(7)

目录 3. 友元 3.1 友元函数 3.2 友元类 4. 内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 7. 再次理解类和对象 3. 友元 友元提供了一种突破封装的方式&#xff0c;有时提供了便利。但是友元会增加耦合度&#xff0c;破坏了封装&#xff0c;所以 友元不宜多用。 友元…

SAP-PS-001-006问题预算占用与订单实际金额不一致

前言 PS模块最复杂的业务场景主要就是ETO&#xff08;Engineering-To-Order&#xff09;&#xff0c;也就是边设计边生产边采购的三边业务。 意味着从前端设计开始的成本就已经要进行收集&#xff0c;其次对于大型非标设备的生产发货只是一个环节&#xff0c;发货后还会涉及到现…

解决hive表新增的字段查询为空null问题

Hive分区表新增字段&#xff0c;查询时数据为NULL的解决方案 由于业务拓展&#xff0c;需要往hive分区表新增新的字段&#xff0c;hive版本为2点多。 于是利用 alter table table_name add columns (col_name string )新增字段&#xff0c;然后向已存在分区中插入数据&#x…

单片机基础入门:简单介绍51单片机的工作原理

在电子技术领域&#xff0c;单片机是实现智能化控制不可或缺的关键元件。它们集成了许多功能于一身&#xff0c;成为了各种电子系统的心脏。为了更好地理解单片机如何工作&#xff0c;本文将重点介绍51单片机的基本组成和工作原理。 51单片机是一种广泛使用的微控制器&#xf…

Leetcode2786. 访问数组中的位置使分数最大

Every day a Leetcode 题目来源&#xff1a;2786. 访问数组中的位置使分数最大 解法1&#xff1a;动态规划 状态数组&#xff1a; dp[i][0]: 访问下标范围 [0, i] 中的元素且最后访问的元素是偶数时的最大得分&#xff1b;dp[i][1]: 访问下标范围 [0, i] 中的元素且最后访问…

SpringBoot框架入门指南

文章目录 SpringBoot的特点Spring&#xff0c;SpringBoot的区别SpringBoot常用注解标签SpringBoot概述SpringBoot简单Demo搭建读取配置文件的内容 SpringBoot自动配置Condition自定义beanSpringBoot常用注解原理EnableAutoConfiguration SpringBoot监听机制SpringBoot启动流程分…