- 主题:异常这玩意儿当初是哪个脑残发明出来的?
滥用异常的,才是该死的
【 在 z16166 的大作中提到: 】
: 异常现在都是查表的,哪一层有catch宣称自己能解决,那这层在表里就会有注册handler。
: 到处滥用catch(...),就是万恶之源之一
:
--
FROM 115.45.111.*
抛异常,处理异常
跟
处理返回码的 if else
你猜哪个开销大
【 在 ziqin 的大作中提到: 】
: 你捕获了以后,可以转成自己内部的错误码啊
: 用错误码就要判断错误码,就会多出predict branch,对延时不敏感的无所谓,对延时敏感的,差别还是很大。
:
--
FROM 115.45.111.*
嗯,是这理
那咱们就回到标准库
std::stoi <-- 这个会抛异常,咱们就讨论下这个抛异常是否合理
对于如此高频使用&基础的API,在所谓的”异常数据“ 抛异常了,合理还是不合理
我觉得这不合理,我是会显式避开这个函数的
【 在 ziqin 的大作中提到: 】
: 所以关键在判断,某一个状态到底是异常,还是正常业务状态,这个带有一定的主观性
: 单次异常处理开销肯定是大的,但是数量应该及其小
: if else开销肯定小,但是顶不住数量大,而且会破坏代码结构
: ...................
--
FROM 115.45.111.*
nodiscard 出来得太晚了
如果这东西一开始出现,估计没异常啥事
【 在 speedboy2998 的大作中提到: 】
: 污染性太强了。。。
: 老老实实地判断返回值不好好的吗?
--
FROM 115.45.111.*
数据处理的时候,你哪知道上游给你的是啥垃圾
正常的处理不应该是 : 如果给的输入能正常处理,那就是正常值;如果处理不了,我给个默认值
【 在 z16166 的大作中提到: 】
: 高频使用,不等于高频抛异常啊
: 如果某个地方可能会高频抛异常(比如被人不停攻击,输入非法的数字给std::stoi抛异常),你得加前置检查或者改变实现
:
--
FROM 121.35.45.*
实在理解不了stoi抛异常的支撑是啥,这是为了异常而异常啊
【 在 overcomeunic 的大作中提到: 】
: 数据处理的时候,你哪知道上游给你的是啥垃圾
: 正常的处理不应该是 : 如果给的输入能正常处理,那就是正常值;如果处理不了,我给个默认值
:
--
FROM 121.35.45.*
呵呵,我无化可话
【 在 z16166 的大作中提到: 】
: 肯定要区分外部输入、内部输入
: 外部输入不可信,要做防御性编程,tainted data checking。
: 内部其他模块的输入不用这么严格,而且大部分情况下不应该是非法格式的数据
: ...................
--
FROM 115.45.111.*
数据清洗不也得看数据是不是合法的么?
如果清洗的时候又是用这个,该啥样子还是啥样子
比如超 21亿的数字
【 在 ziqin 的大作中提到: 】
: 你不做数据清洗的么?
:
--
FROM 115.45.111.*