- 主题:异常这玩意儿当初是哪个脑残发明出来的?
我在公司项目里面明确禁止使用任何异常。如果要引入第三方库,带有异常的也禁止引入。
【 在 speedboy2998 的大作中提到: 】
: 那就整个程序从开头到结尾用一个 try catch 给包起来,最省事。。哈哈
:
: 【 在 ziqin 的大作中提到: 】
: ...................
--来自微水木3.5.10
--
FROM 183.193.16.*
因为这个世界是草台班子,一个项目开发维护几年可能都换了好几拨人,没有统一框架而依靠个人对异常进行管理,必然会有大量catch(...)
--
FROM 183.195.13.*
嗯,是这理
那咱们就回到标准库
std::stoi <-- 这个会抛异常,咱们就讨论下这个抛异常是否合理
对于如此高频使用&基础的API,在所谓的”异常数据“ 抛异常了,合理还是不合理
我觉得这不合理,我是会显式避开这个函数的
【 在 ziqin 的大作中提到: 】
: 所以关键在判断,某一个状态到底是异常,还是正常业务状态,这个带有一定的主观性
: 单次异常处理开销肯定是大的,但是数量应该及其小
: if else开销肯定小,但是顶不住数量大,而且会破坏代码结构
: ...................
--
FROM 115.45.111.*
nodiscard 出来得太晚了
如果这东西一开始出现,估计没异常啥事
【 在 speedboy2998 的大作中提到: 】
: 污染性太强了。。。
: 老老实实地判断返回值不好好的吗?
--
FROM 115.45.111.*
expected也很晚
【 在 overcomeunic 的大作中提到: 】
: nodiscard 出来得太晚了
: 如果这东西一开始出现,估计没异常啥事
: 【 在 speedboy2998 的大作中提到: 】
: ...................
--
FROM 114.246.236.*
我的观念是处理不了的错误直接dump,能恢复的错误返回值。
【 在 ziqin (子青|会挽雕弓如满月|西北望|射天狼) 的大作中提到: 】
: 我用exception的准则是:
: 1. 函数运行时出错率<1%,也就是说错误是一个真正的小概率异常,而不是业务状态 and
: 2. caller没有因对错误的逻辑
:
--
FROM 39.144.39.*
高频使用,不等于高频抛异常啊
如果某个地方可能会高频抛异常(比如被人不停攻击,输入非法的数字给std::stoi抛异常),你得加前置检查或者改变实现
【 在 overcomeunic 的大作中提到: 】
: 嗯,是这理
: 那咱们就回到标准库
: std::stoi <-- 这个会抛异常,咱们就讨论下这个抛异常是否合理
: ...................
--
FROM 221.218.161.*
数据处理的时候,你哪知道上游给你的是啥垃圾
正常的处理不应该是 : 如果给的输入能正常处理,那就是正常值;如果处理不了,我给个默认值
【 在 z16166 的大作中提到: 】
: 高频使用,不等于高频抛异常啊
: 如果某个地方可能会高频抛异常(比如被人不停攻击,输入非法的数字给std::stoi抛异常),你得加前置检查或者改变实现
:
--
FROM 121.35.45.*
实在理解不了stoi抛异常的支撑是啥,这是为了异常而异常啊
【 在 overcomeunic 的大作中提到: 】
: 数据处理的时候,你哪知道上游给你的是啥垃圾
: 正常的处理不应该是 : 如果给的输入能正常处理,那就是正常值;如果处理不了,我给个默认值
:
--
FROM 121.35.45.*
确实。。异常应该是能不能就不用。
我觉得两个地方用异常非常的好:
1. 申请内存失败。
2. 协程退出。
其它地方用异常都值得商榷。包括 IO 错误啥的,都属于非常常见的场景,不应该用异常。
【 在 overcomeunic 的大作中提到: 】
: 实在理解不了stoi抛异常的支撑是啥,这是为了异常而异常啊
--
FROM 120.37.21.*