Java异常处理详解

Java异常处理详解

      • 1. 异常概述
      • 2. 异常类别
      • 3. 异常处理机制
        • 3.1 try-catch
          • 示例代码:
          • 输出结果:
        • 3.2 finally
          • 示例代码:
          • 输出结果:
        • 3.3 throw和throws
          • 示例代码:
          • 输出结果:
      • 4. 自定义异常
          • 示例代码:
          • 输出结果:
      • 结论

在Java编程中,异常处理是一个重要的部分。本文将详细介绍Java中的异常处理机制,包括异常的类型、如何捕获和处理异常,以及如何自定义异常。

在这里插入图片描述

1. 异常概述

在Java中,异常是在程序执行过程中出现的不正常情况,这些情况会打断正常的指令流。Java处理异常的方式是中断处理。

2. 异常类别

Java中的异常分为两大类:检查型异常(Checked Exceptions)非检查型异常(Unchecked Exceptions)

  • 检查型异常:这类异常在编译时会被检查,必须被显式地处理,否则程序无法编译。例如:IOException
  • 非检查型异常:包括运行时异常(RuntimeException)和错误(Error)。这类异常在编译时不会被检查。

3. 异常处理机制

Java使用trycatchfinallythrowthrows关键字来处理异常。

3.1 try-catch

try块包含可能产生异常的代码,catch块用来捕获和处理异常。

示例代码:
public class TryCatchExample {public static void main(String[] args) {try {int data = 50 / 0; // 可能产生异常的代码} catch (ArithmeticException e) {System.out.println(e);}System.out.println("程序继续执行...");}
}
输出结果:
java.lang.ArithmeticException: / by zero
程序继续执行...
3.2 finally

finally块无论是否有异常发生都会执行,通常用于释放资源。

示例代码:
public class FinallyExample {public static void main(String[] args) {try {int data = 25 / 5;} catch (NullPointerException e) {System.out.println(e);} finally {System.out.println("finally块总是执行");}System.out.println("程序继续执行...");}
}
输出结果:
finally块总是执行
程序继续执行...
3.3 throw和throws
  • throw 用于显式地抛出一个异常。
  • throws 在方法签名中用于声明该方法可能抛出的异常。
示例代码:
public class ThrowExample {static void checkAge(int age) {if (age < 18) {throw new ArithmeticException("未成年");} else {System.out.println("欢迎投票");}}public static void main(String[] args) {try {checkAge(15);} catch (ArithmeticException e) {System.out.println("捕获的异常: " + e.getMessage());}}
}
输出结果:
捕获的异常: 未成年

4. 自定义异常

有时候,我们需要根据特定的应用需求来定义异常。这可以通过继承Exception类或任何其子类来实现。

示例代码:
class MyException extends Exception {public MyException(String s) {super(s);}
}public class CustomExceptionExample {static void validate(int number) throws MyException {if (number < 10) {throw new MyException("数字太小");}}public static void main(String[] args) {try {validate(3);} catch (MyException ex) {System.out.println("捕获的异常:" + ex.getMessage());}}
}
输出结果:
捕获的异常:数字太小

结论

Java的异常处理机制是一种强大的工具,它不仅能帮助我们处理程序中的错误情况,而且还能使程序的流程更加清晰。理解和合理使用异常处理,对于编写可靠和健壮的Java程序至关重要。

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

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

相关文章

FindMy技术|CES展会上最新的Location Card钱包卡产品

国际消费类电子产品展览会CES 2024于当地时间1月9日至12日在美国拉斯维加斯举行&#xff0c;众多知名公司都参加了此次展会&#xff0c;如三星、高通、LG等。各个公司都在此次展会上展出了自己公司的最新产品&#xff0c;其中一款最新的苹果FindMy冷压卡也备受瞩目。 这款全新的…

高防ip是什么,防护效果好吗

DDoS攻击是互联网最常见的网络攻击方式之一&#xff0c;通过大量虚假流量对目标服务器进行攻击&#xff0c;堵塞网络耗尽服务器性能&#xff0c;导致服务器崩溃&#xff0c;真正的用户无法访问。以前企业常用的防御手段就是高防服务器&#xff0c;也就是硬防&#xff0c;但由于…

【野火i.MX6ULL开发板】开发板连接网络(WiFi)与 SSH 登录、上电自动登录、设置静态IP、板子默认参数

0、前言 参考之前自己写的&#xff1a; http://t.csdnimg.cn/g60P8 参考资料&#xff1a; [野火]《Linux基础与应用开发实战指南——基于i.MX6ULL开发板》_20230323 从野火官网下载 参考博客&#xff1a; http://t.csdnimg.cn/8uh4O 参考官方文档&#xff1a; https://doc.…

IDEA中明明代码没有报错,运行也不报错,但是代码却爆红了,重启idea,重启电脑,重新加载Maven都没有用

报错示图&#xff1a; 报错类是存在的 我的解决办法是修改类名&#xff0c;修改类名时会有提示&#xff0c;如下图&#xff1a; 然后点击报错的地方可以看到是哪些位置引用了 改回正确的类名 正常显示

智汇云舟受邀出席石油化工工程数字化交付研讨会

1月9日&#xff0c;由中国石油和石化工程研究会主办的石油化工工程数字化交付研讨会暨智能化工厂建设运行经验交流会在北京顺利召开。智汇云舟创始人兼总裁周舟受邀出席活动&#xff0c;与来自中国石油、中国石化、中国海油、中国中化等单位的相关专家、领导三百余人共同探讨如…

定时任务框架-xxljob

spring传统的定时任务Scheduled&#xff0c;但是这样存在这一些问题 &#xff1a; 做集群任务的重复执行问题 cron表达式定义在代码之中&#xff0c;修改不方便 定时任务失败了&#xff0c;无法重试也没有统计 如果任务量过大&#xff0c;不能有效的分片执行 1.分布式任务调…

“揭秘性能测试工具:优化软件性能的关键秘籍“

性能测试工具的设计宗旨是为了模拟用户对软件应用程序或系统的各种操作&#xff0c;旨在评估关键的性能指标&#xff0c;包括响应时间、吞吐量、并发能力和资源利用率。 通过这些工具模拟的多用户环境&#xff0c;我们能够产生与实际工作负载相似的条件&#xff0c;并监测系统…

❤ Vue3 完整项目太白搭建 Vue3+Pinia+Vant3/ElementPlus+typerscript(一)yarn 版本控制 ltb (太白)

❤ 项目搭建 一、项目信息 Vue3 完整项目搭建 Vue3PiniaVant3/ElementPlustyperscript&#xff08;一&#xff09;yarn 版本控制 项目地址&#xff1a; 二、项目搭建 &#xff08;1&#xff09;创建项目 yarn create vite <ProjectName> --template vueyarn install …

使用即时设计绘制原型设计方便吗?和Axure RP相比怎么样?

对于原型设计&#xff0c;APP 和 Web 都是一样的&#xff0c;因为产品原型是用来确定需求的工具。我们使用这种工具的目的是为了快速迭代&#xff0c;从而深入挖掘和筛选产品的需求。 绘制原型&#xff0c;最重要的原则是&#xff1a;快速、清晰&#xff01; Axure 工具的优缺…

Js - 函数(四)

1.函数简单介绍 什么是函数&#xff1f; 函数&#xff08;function&#xff09;是执行特定任务的一段代码块 为什么需要函数&#xff1f; 可以实现代码复用&#xff0c;提高开发效率 2.函数使用 函数的声明语法 函数名命名规范 函数的调用语法 函数体 函数体是函数的构…

GNSS差分码偏差(DCB)原理学习与数据下载地址

一、DCB原理 GNSS差分码偏差&#xff08;DCB&#xff0c;Differential Code Bias&#xff09;是由不同类型的GNSS信号在卫星和接收机不同通道产生的时间延迟&#xff08;硬件延迟/码偏差&#xff09;差异&#xff0c;按照频率相同或者不同又可以细分为频内偏差&#xff08;例如…

工具推荐:知识库软件有了这些就够了

在现代企业中&#xff0c;信息传播、知识共享至关重要。由于公司内部员工、组织结构、业务流程如此庞大且复杂&#xff0c;失效和过时的信息可能会进一步增加混乱&#xff0c;影响效率。因此&#xff0c;有一个强大的知识库软件可以帮助公司整合所有的知识资源&#xff0c;确保…