这一篇让你知道怎么处理异常

简介: 这一篇让你知道怎么处理异常

Java异常处理方式


image.png

Java 通过面向对象的方法进行异常处理,一旦方法抛出异常,系统自动根据该异常对象寻找合适异常处理器(Exception Handler)来处理该异常,把各种不同的异常进行分类,并提供了良好的接口。在 Java 中,每个异常都是一个对象,它是 Throwable 类或其子类的实例。


当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理。Java 的异常处理是通过 5 个关键词来实现的:try、 catch、throw、throws 和 finally。


在Java应用中,异常的处理机制分为声明异常,抛出异常和捕获异常。



throw和throws的区别:



  1. 位置不同:throw:方法内部throws: 方法的签名处,方法的声明处


  1. 内容不同:throw+异常对象(检查异常,运行时异常)throws+异常的类型(可以多个类型,用,拼接)


  1. 作用不同:throw:异常出现的源头,制造异常。throws:在方法的声明处,告诉方法的调用者,这个方中可能会出现我声明的这些异常。然后调用者对这个异常进行处理:要么自己处理要么再继续向外抛出异常



1.throws声明异常


通常,应该捕获那些知道如何处理的异常,将不知道如何处理的异常继续传递下 去。传递异常可以在方法签名处使用 throws 关键字声明可能会抛出的异常。注意 非检查异常(Error、RuntimeException 或它们的子类)不可使用 throws 关键字来声明要抛出的异常。 一个方法出现编译时异常,就需要 try-catch/ throws 处理,否则会导致编译错误



2.throw抛出异常



如果你觉得解决不了某些异常问题,且不需要调用者处理,那么你可以抛出异常。 throw关键字作用是在方法内部抛出一个Throwable类型的异常。任何Java代码都可以通过throw语句抛出异常。



3.trycatch捕获异常


程序通常在运行之前不报错,但是运行后可能会出现某些未知的错误,但是还不想直接抛出到上一级,那么就需要通过try…catch…的形式进行异常捕获,之后根据不同的异常情况来进行相应的处理。如何选择异常类型


可以根据下图来选择是捕获异常,声明异常还是抛出异常


image.png




自定义异常在生产中如何应用


Java虽然提供了丰富的异常处理类,但是在项目中还会经常使用自定义异常,其主要原因是Java提供的异常类在某些情况下还是不能满足实际需球。例如以下情况:


  1. 系统中有些错误是符合Java语法,但不符合业务逻辑。


  1. 在分层的软件结构中,通常是在表现层统一对系统其他层次的异常进行捕获处理。




相关文章
|
XML Java 数据库连接
mybatis-plus逆向工程详解
mybatis-plus逆向工程详解
612 0
|
jenkins Java Linux
Jenkins启动失败的一些处理
Jenkins启动失败的一些处理
|
消息中间件 存储 Kafka
开源FaaS平台(二):Apache OpenWhisk
Apache OpenWhisk是一个开源FaaS平台,是一个由IBM和Adobe驱动的开源项目,可以部署在云或数据中心内。相比其他Serverless项目,OpenWhisk是一个健壮的、可扩展的平台,支持数千并发触发器和调用。OpenWhisk项目的基本信息如下表
1244 0
|
7月前
|
人工智能 BI API
Dify-Plus:企业级AI管理核弹!开源方案吊打SaaS,额度+密钥+鉴权系统全面集成
Dify-Plus 是基于 Dify 二次开发的企业级增强版项目,新增用户额度、密钥管理、Web 登录鉴权等功能,优化权限管理,适合企业场景使用。
1027 3
Dify-Plus:企业级AI管理核弹!开源方案吊打SaaS,额度+密钥+鉴权系统全面集成
|
10月前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
174 5
|
开发工具 git 开发者
【git merge/rebase】详解合并代码、解决冲突
【git merge/rebase】详解合并代码、解决冲突
2388 0
|
11月前
|
人工智能 算法 IDE
IDEA中通义灵码的使用技巧
大家好,我是 V 哥。在日常开发中,我常用通义灵码辅助编程,尤其在解释代码和生成单元测试方面表现优异。本文将详细介绍通义灵码的安装、使用方法及优化建议功能,帮助你提升开发效率。关注威哥爱编程,编码路上我们一起前行。
6516 7
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
796 1
|
测试技术 UED
软件测试中的探索性测试:一种高效且灵活的测试方法
本文将深入探讨探索性测试的核心概念、优势及其在实际项目中的应用。我们将从探索性测试的基本定义入手,逐步解析其在不同场景下的具体实施方法和最佳实践。通过详细的案例分析和方法对比,帮助读者全面了解这种既高效又灵活的软件测试技术。
|
人工智能 搜索推荐
‘通义万相’使用体验——令人惊艳的AI绘画创作大模型
7月7日,阿里云在2023世界人工智能大会上宣布,AI绘画创作大模型通义万相开启定向邀测。通义万相是阿里云“通义”大模型系列第三个产品,此前的通义千问、通义听悟分别具备文字问答和语音文字处理的功能。目前该模型已经开启定向邀测.