java 使用异常的好处总结

发布时间 - 2026-01-10 23:22:09    点击率:

java 使用异常的好处总结

一、分析

Java异常处理机制确实比较慢,这个“比较慢”是相对于诸如String、Integer等对象来说,单单从对象的创建上来说,new一个IOException会比String慢5倍,这从异常的处理机制上也可以解释:因为它执行fillStackTrace方法,要记录当前栈的快照,而String类则是直接申请创建一个内存创建对象,异常类慢一筹也在所难免。   

 二、场景

我们知道异常是主逻辑的例外逻辑,举个例子来说,比如我们能在马路上走(这时主逻辑),突然开过一辆车,我要避让(这是受检异常,必须处理),继续走着,不然一架飞机从我头顶飞过(非受检异常),我们可以选择继续行走(不捕捉),也可以选择指责噪音污染(捕捉,主逻辑的补充处理),在继续走着,突然一颗流星砸下来,这就没有选择,属于错误,不能做任何处理。

任何一个事物的处理都可能产生非预期的结果,问题是需要以何种手段来处理,如果不使用异常就需要依靠返回值的不同来进行处理了,这严重严重失去了面向对象的风格。

例如,用户登录的用例,就会在”例外事件“中说明”连续3次登陆失败即锁定用户账号“,这就是登陆事件的一个异常处理,具体到我们的程序中就是:

<span style="font-family:SimSun;font-size:14px;">   public voidlogin(){ 
     try{ 
       //正常登陆 
     }catch(InvalidLoginExceptionlie){ 
       //用户名无效 
     }catch(InvalidPasswordExceptionpe){ 
       //密码错误的异常 
     }catch(TooMouchLoginExceptiontmle){ 
       //多次登陆失败的异常 
     }     
   }</span> 

如此设计则可以让我们的login方法更符合实际的处理逻辑,同时使主逻辑(正常登陆,try代表块)更加清晰。使用异常有很多优点,比如可让正常代码和异常代码分离,能快速查找问题(栈信息快照)等,但是异常有一个缺点:性能比较慢。
但是我们不能因为性能问题而放弃使用异常,难道我们的系统连如此微小的性能消耗都不允许吗?

  三、建议 

        性能问题不是拒绝异常的借口

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 异常  # 异常详解  # 异常与性能  # Java中自定义异常详解及实例代码  # java基于spring注解AOP的异常处理的方法  # Java 异常详解  # JAVA中常见异常类  # java 异常详解及应用实例  # 深入理解java异常处理机制及应用  # java 解决异常 2 字节的 UTF-8 序列的字节2 无效的问题  # Java 常见异常(Runtime Exception )详细介绍并总  # 浅谈java中异常抛出后代码是否会继续执行  # java异常(Exception)处理机制详解  # 比较慢  # 可以选择  # 走着  # 这是  # 我要  # 都不  # 让我们  # 有很多  # 这就是  # 则是  # 会在  # 一颗  # 能在  # 这就  # 希望能  # 问题是  # 在所难免  # 因为它  # 任何一个  # 从我 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: javascript中闭包概念与用法深入理解  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  如何在云虚拟主机上快速搭建个人网站?  深入理解Android中的xmlns:tools属性  Python文件流缓冲机制_IO性能解析【教程】  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel如何使用Sanctum进行API认证?(SPA实战)  Mybatis 中的insertOrUpdate操作  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel Fortify是什么,和Jetstream有什么关系  浅谈redis在项目中的应用  使用Dockerfile构建java web环境  如何批量查询域名的建站时间记录?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel如何创建自定义Facades?(详细步骤)  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  怎么用AI帮你设计一套个性化的手机App图标?  如何在阿里云购买域名并搭建网站?  如何续费美橙建站之星域名及服务?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  企业网站制作这些问题要关注  中国移动官方网站首页入口 中国移动官网网页登录  bing浏览器学术搜索入口_bing学术文献检索地址  如何在IIS管理器中快速创建并配置网站?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  开心动漫网站制作软件下载,十分开心动画为何停播?  javascript读取文本节点方法小结  JavaScript如何操作视频_媒体API怎么控制播放  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  如何在香港免费服务器上快速搭建网站?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  如何在新浪SAE免费搭建个人博客?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Linux网络带宽限制_tc配置实践解析【教程】  zabbix利用python脚本发送报警邮件的方法  想要更高端的建设网站,这些原则一定要坚持!  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel模型事件有哪些_Laravel Model Event生命周期详解  长沙企业网站制作哪家好,长沙水业集团官方网站?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】