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惊人的效率!相关推荐

  1. java关于throw Exception的一个小秘密

    文章目录 简介 throw小诀窍 总结 java关于throw Exception的一个小秘密 简介 之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unc ...

  2. php的异常处理,PHP异常处理Exception类

    异常(Exception)用于在指定的错误发生时改变脚本的正常流程. 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法. 异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这 ...

  3. exception java doc,Javadoc和RuntimeException

    I am curious about if I should add throws ExceptionClass or not after the method's signature.(Except ...

  4. try catch 有多烦人,我就有多暴躁!一次搞定 Exception ^ ^

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:干掉 Navicat:这个 IDEA 的兄弟真香!个人原创100W+访问量博客:点击前往,查看更多 本文来源:c ...

  5. 【机器视觉】 throw算子

    00. 目录 文章目录 00. 目录 01. 概述 02. 签名 03. 描述 04. 注意 05. 参数 06. 结果 07. 附录 01. 概述 throw- 抛出一个用户定义的异常或重新抛出一个 ...

  6. 《C++ Primer 第五版》(第5.1-5.6节) ——异常处理机制(try语句块,throw表达式和catch异常捕捉处理单元)

    1. 异常处理机制 C++中使用try,throw和catch三个关键字来实现异常的触发.抛出和处理的功能,具体通用语法形式如下: try{ if(true) normal program-state ...

  7. python yield: send, close, throw

    send 1. yield可以产出值,可以接收值 2. 在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种 a. gen.send(None) b. next(gen) def ...

  8. 自定义异常throw

    简单自定义一个年龄小于等于0,或者大于120会出现的异常 首先继承父类Exception,调用父类的构造器,这样才可以报出自己想要的异常 public class AgeException exten ...

  9. Python生成器的throw和close方法

    def gen_func():try:yield 1except Exception as e:passyield 2yield 3yield 4yield 5return "bobby&q ...

最新文章

  1. OpenShift — 核心概念
  2. managedwifi.codeplex.com
  3. mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」
  4. 2017 ACM Jordanian Collegiate Programming Contest
  5. (96)FPGA面试题-Verilog设计半加器
  6. Linux虚拟化KVM-Qemu分析(五)之内存虚拟化
  7. 2017.5.2AM
  8. java常用的网关有哪几种_拼多多java开发一面、二面合并面经
  9. iOS开发之WKWebView的使用以及遇到的问题
  10. python模块导入三种方式
  11. 设计模式系列--Singleton
  12. access设置 dolby_Dolby Access免费版
  13. 德标螺纹规格对照表_德标与国标对照表
  14. Android 汇率换算对比小工具
  15. 计算机相关经典书籍推荐
  16. 技嘉显卡性能测试软件,技嘉RTX 3080 GAMING OC魔鹰显卡评测:全方位压倒前辈的新秀...
  17. JQuery 判断访问的浏览器是pc还是手机
  18. Springboot企业工资管理rycxe计算机毕业设计-课程设计-期末作业-毕设程序代做
  19. 多智能体中的图论——图论中的定义(一)
  20. 明道云与阿里1688对接案例

热门文章

  1. Bugtags 远程配置功能介绍
  2. java二维码解析 zxing
  3. 教育、卫生和社会服务-省级面板数据数据(1994-2019年)
  4. 智慧医院系统定制|慢病管理系统更全面
  5. 数字证书如何申请以及有什么要求
  6. UG NX导出2D图纸
  7. Android原生开发--模拟器检测工具包
  8. 电脑开机显示我的计算机无法启动,“双击我的电脑无法打开,出现打开方式的解决方案”的解决方案...
  9. 手写识别软件背景知识
  10. (转)Ubuntu 17.04_64上搭建巡风扫描系统(资产信息漏洞扫描内网神器)