java 使用异常的好处总结
作者:彭呈祥 发布时间:2023-11-29 13:35:49
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代表块)更加清晰。使用异常有很多优点,比如可让正常代码和异常代码分离,能快速查找问题(栈信息快照)等,但是异常有一个缺点:性能比较慢。
但是我们不能因为性能问题而放弃使用异常,难道我们的系统连如此微小的性能消耗都不允许吗?
三、建议
性能问题不是拒绝异常的借口
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/p106786860/article/details/12119117


猜你喜欢
- SpringBoot加载application.properties配置文件的坑事情的起因是这样的一次,本人在现场升级程序,升级完成后进行测
- 大家好,因为近期做需求中遇到了文件上传这个东西,而且我这个还是跨服务去传输文件的所以我这边使用了httpclient和RestTemplat
- 概述:Flutter 标签类控件大全ChipFlutter内置了多个标签类控件,但本质上它们都是同一个控件,只不过是属性参数不同而已,在学习
- Spring Boot 自动装配最重要的注解@SpringBootApplication@Target(ElementType.TYPE)@
- Cocos2d-x从2.x版本到上周刚刚才发布的Cocos2d-x 3.0 Final版,其引擎驱动核心依旧是一个单线程的“死循环”,一旦某
- java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类 。在java的世界里,提供了匿名内部类语法,用于帮助大家简化代码,本文
- 1.简介其实这个效果几天之前就写了,但是一直没有更新博客,本来想着把芝麻分雷达图也做好再发博客的,然后今天看到鸿洋的微信公众号有朋友发了芝麻
- 问题描述:输入:两个日期输出:两个日期相差的天数具体代码实现方法1:通过Calendar类的日期比较。注意:这里需要考虑一下:日期是跨年份的
- 在程序运行中经常需要对数据进行对比显示,其中使用柱状图显示非常直观,可以更显著的比较出数据量的走势。下面介绍在C#中柱状图的制作方法:1、方
- 本文介绍了android APP登陆页面适配的实现,分享给大家,具体如下:先看效果图。登陆首页效果图原理为RootView增加监听事件,然后
- 前言这里用swing ,awt写的。我们大概要做成一个电脑的记事本那样的一个编辑器。可以调整字体,字号,颜色。能够打开、保存文件,新建窗口,
- 在使用一些产品列如微信、QQ之类的,如果有新消息来时,手机屏幕即使在锁屏状态下也会亮起并提示声音,这时用户就知道有新消息来临了。但是,一般情
- 实例如下:private void Form1_Load(object sender, EventArgs e)
- 问题描述我在接受 mq 消息的时候,需要做一个重试次数限制,如果超过 maxNum 就发邮件告警,不再重试。所以我需要对 consumer
- 最近因考虑接口安全问题,有实现给WEB API实现统一的参数鉴权功能,以防止请求参数被篡改或重复执行,参数鉴权方法基本与常见的鉴权思路相同,
- 第一步:整合pom文件,在Spring Cloud中添加XXL-Job的依赖<!-- xxl-job-core --><d
- 前言:本文主要介绍内容有:一个串行调用的例子(App首页信息查询)CompletionService实现并行调用抽取通用的并行调用方法代码思
- 本文为大家分享了经典24点纸牌益智游戏的具体实现方法,供大家参考,具体内容如下一.实验内容24点游戏是经典的纸牌益智游戏。常见游戏规则:从扑
- 一般,我们的web应用都是只有在用户登录之后才允许操作的,也就是说我们不允许非登录认证的用户直接访问某些页面或功能菜单项。我还记得很久以前我
- 本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现;