不要把异常当做业务逻辑,这性能可能你无法承受

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不要把异常当做业务逻辑,这性能可能你无法承受相关的知识,希望对你有一定的参考价值。

一:背景

1. 讲故事

在项目中摸爬滚打几年,应该或多或少的见过有人把异常当做业务逻辑处理的情况(┬_┬),比如说判断一个数字是否为整数,就想当然的用try catch 包起来,再进行 int.Parse,如果抛异常就说明不是整数,简单粗暴,也不需要写正则或者其他逻辑,再比如一个字符串强制转化为Enum,直接用Enum.Parse,可能是因为对异常的开销不是特别了解,这种不好的使用习惯也许被官方发现了,后续给我们补了很多的Try前缀的方法,比如:int.TryParse , Enum.TryParse, dict.TryGetValue ,用代码展示如下:

            //原始写法
            var num = int.Parse("1");

            //使用try方式
            var result = 0;
            var b = int.TryParse("1", out result);

用Try系列方法没毛病,但这写法让人吐槽,还要单独定义result变量,没撤,官方还得靠我们这些开发者给他们发扬光大

以上是关于不要把异常当做业务逻辑,这性能可能你无法承受的主要内容,如果未能解决你的问题,请参考以下文章

大脑能存储,但不要把它当做磁盘用

不要将抛出异常作为业务逻辑使用

不要将抛出异常作为业务逻辑使用

技术干货 | 高负载压测下接口异常问题定位排查-Redis

性能测试:通过一个案例告诉你,性能到底要不要熟悉业务逻辑?

面向切面编程 AOP 和装饰器??