- 主题:我觉得有个场景,就是异常的死穴
这根本不是C++异常的“死穴”。
如果“某个key不存在”是事先可以预期的,并且还能提供默认值,那么“某个key不存在就抛异常”,等于是把异常用于程序流程控制,是不合适的用法。
--
FROM 114.254.115.*
本地处理不了(而且没给默认值),就可以抛啊
非法的值,是这个解析函数本地无法处理的,只能报告上去。
(如果给了默认值,那就是本地能处理的,处理方法就是返回一个默认值)。
但是,如果非法的值遇到的概率高,那也是不能抛异常的。频繁抛异常影响性能。
【 在 speedboy2998 的大作中提到: 】
: OK, 那这个值存在,但是是非法的值,你怎么处理?你能实现预期?抛不抛异常?
:
--
修改:z16166 FROM 114.254.115.*
FROM 114.254.115.*
哪个?你那个也是能本地处理的啊,因为你提供了默认值
而且没人说要用异常解决一切问题啊,哈哈
【 在 speedboy2998 的大作中提到: 】
: 所以我上面那个场景异常就很无力了。
:
--
修改:z16166 FROM 114.254.115.*
FROM 114.254.115.*
只用返回值的坏处,早就是一堆讨论了
【 在 foliver 的大作中提到: 】
: 看看rust,那才是正确的做法,强制用户判断返回值。
:
: 异常在设计上根本缺点就是破坏了程序状态机,破坏了结构化设计的原则,谁知道最后异常跑到哪里了。如果层层抓取,那要异常何用,如果越级捕获,和goto满天飞有啥区别?
: ...................
--
FROM 114.254.115.*