throw Exception惊人的效率!
throw Exception惊人的效率!
- 1. 时间地点人物
- 2. 开始
- 3. 经过
- 4. 结果
- 5. 总结
- 6. 打脸
1. 时间地点人物
新冠病毒时期,在家办公与同学交流代码,谈到编码规范和效率。
2. 开始
在Restful Api中,我公司通过throw BusinessException() 抛出412以及500等异常,我知道throw会影响效率,但出于对编程语言的相对信
任,我并不认为效率会相差多少。
还是试试吧
3. 经过
语言:C#
环境:.Net Core 3.1
[HttpGet("string")]
public async Task<bool> GetString()
{return await Task.FromResult(true);
}[HttpGet("throw")]
public bool Throw()
{throw new BusinessException("error");
}
4. 结果
如下:
我的天!
5. 总结
问了一位资深同事,讲到可能是因为异常需要定位异常发出的位置,以及错误堆栈,在这里花费了较多时间,只是花费时间,并不占用内存资源。
但我补充一下,资源=时间*内存,直到完成响应,依赖注入的对象是不被销毁的,占用时间其实就意味着牺牲了资源,而且是将近百倍的时间,在并发的时候确实是个累赘。
所以,412的Response还是别借助异常实现了。500的异常是可以使用异常类的,因为500+的错误是需要修复的!
6. 打脸
我将结论share给朋友了一下,朋友提出release模式下会不会还有这么大的差距。
可见,异常只会在debug模式下,在ide构建异常堆栈时消耗时间,在生产环境下,效率差异可忽略不计。
其实经验就是这样,一次次验证,一次次推翻,一次次重新定义。
throw Exception惊人的效率!相关推荐
- java关于throw Exception的一个小秘密
文章目录 简介 throw小诀窍 总结 java关于throw Exception的一个小秘密 简介 之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unc ...
- php的异常处理,PHP异常处理Exception类
异常(Exception)用于在指定的错误发生时改变脚本的正常流程. 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法. 异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这 ...
- exception java doc,Javadoc和RuntimeException
I am curious about if I should add throws ExceptionClass or not after the method's signature.(Except ...
- try catch 有多烦人,我就有多暴躁!一次搞定 Exception ^ ^
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:干掉 Navicat:这个 IDEA 的兄弟真香!个人原创100W+访问量博客:点击前往,查看更多 本文来源:c ...
- 【机器视觉】 throw算子
00. 目录 文章目录 00. 目录 01. 概述 02. 签名 03. 描述 04. 注意 05. 参数 06. 结果 07. 附录 01. 概述 throw- 抛出一个用户定义的异常或重新抛出一个 ...
- 《C++ Primer 第五版》(第5.1-5.6节) ——异常处理机制(try语句块,throw表达式和catch异常捕捉处理单元)
1. 异常处理机制 C++中使用try,throw和catch三个关键字来实现异常的触发.抛出和处理的功能,具体通用语法形式如下: try{ if(true) normal program-state ...
- python yield: send, close, throw
send 1. yield可以产出值,可以接收值 2. 在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种 a. gen.send(None) b. next(gen) def ...
- 自定义异常throw
简单自定义一个年龄小于等于0,或者大于120会出现的异常 首先继承父类Exception,调用父类的构造器,这样才可以报出自己想要的异常 public class AgeException exten ...
- Python生成器的throw和close方法
def gen_func():try:yield 1except Exception as e:passyield 2yield 3yield 4yield 5return "bobby&q ...
最新文章
- OpenShift — 核心概念
- managedwifi.codeplex.com
- mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- 2017 ACM Jordanian Collegiate Programming Contest
- (96)FPGA面试题-Verilog设计半加器
- Linux虚拟化KVM-Qemu分析(五)之内存虚拟化
- 2017.5.2AM
- java常用的网关有哪几种_拼多多java开发一面、二面合并面经
- iOS开发之WKWebView的使用以及遇到的问题
- python模块导入三种方式
- 设计模式系列--Singleton
- access设置 dolby_Dolby Access免费版
- 德标螺纹规格对照表_德标与国标对照表
- Android 汇率换算对比小工具
- 计算机相关经典书籍推荐
- 技嘉显卡性能测试软件,技嘉RTX 3080 GAMING OC魔鹰显卡评测:全方位压倒前辈的新秀...
- JQuery 判断访问的浏览器是pc还是手机
- Springboot企业工资管理rycxe计算机毕业设计-课程设计-期末作业-毕设程序代做
- 多智能体中的图论——图论中的定义(一)
- 明道云与阿里1688对接案例
热门文章
- Bugtags 远程配置功能介绍
- java二维码解析 zxing
- 教育、卫生和社会服务-省级面板数据数据(1994-2019年)
- 智慧医院系统定制|慢病管理系统更全面
- 数字证书如何申请以及有什么要求
- UG NX导出2D图纸
- Android原生开发--模拟器检测工具包
- 电脑开机显示我的计算机无法启动,“双击我的电脑无法打开,出现打开方式的解决方案”的解决方案...
- 手写识别软件背景知识
- (转)Ubuntu 17.04_64上搭建巡风扫描系统(资产信息漏洞扫描内网神器)