- 主题:大家都用C++的try catch吗?
因为C++的异常就是根本就搞不清楚,或者说它是一个既要又要还要的乌托邦式的设计。
就算你认为你搞清楚了,那也只是你觉得你清楚了。你用的库,你的同事,你的上级你的下属,都有自己各自的理解和习惯,大概率人家还觉得你的理解不对呢。
一个无法达成共识的东西,那就是设计有问题,不要怪这一届的用户不行。
【 在 smartbear 的大作中提到: 】
: 你压根没搞清楚这个用在什么地方
--
FROM 220.207.87.*
这些库的作者是牛人,他们用经过深思熟虑的异常无所谓(虽然我个人也不太喜欢)。
不过现实公司里面的996工具人们,以SB居多。你无法用牛人的要求去要求你周围的那帮SB们,并且其实那帮SB同时也觉得你是一个更大的SB。。。你也无法要求996的社畜们在满足产品经理的朝令夕改的奇葩要求的同时,还要维护一个完美的文档。就算你写了完美的文档,对不起你的SB同事们是不会看文档的。
【 在 z16166 的大作中提到: 】
: 你的意思是boost、qt这些库的作者都是SB吗,这两个东西是使用异常的
: 抛了异常,但是事先没提供对应的文档说明,才值得骂吧
--
FROM 220.207.87.*
最坏情况下无非就是找各种借口(最常用的借口就是工期)堆shi山
但是在shi山上呆久了,觉得整个世界就只有shi山,甚至还要阻止别人爬出shi山,那就有点搞了
我根本没兴趣管谁用不用c++异常、滥用还是用得好,只是说cpp大佬推荐用异常(这也是C++板块以前有人提醒我的)。但是你看这楼里还是有一些人抱的是陈旧观点,以为现在的c++异常还需要用指令来建立异常帧,那也算澄清了一下
至于那些一口一个fuck一口一个sb的,滚犊子,是不是觉得只有你会骂人呢
【 在 yuanmo 的大作中提到: 】
: 这些库的作者是牛人,他们用经过深思熟虑的异常无所谓(虽然我个人也不太喜欢)。
: 不过现实公司里面的996工具人们,以SB居多。你无法用牛人的要求去要求你周围的那帮SB们,并且其实那帮SB同时也觉得你是一个更大的SB。。。你也无法要求996的社畜们在满足产品经理的朝令夕改的奇葩要求的同时,还要维护一个完美的文档。就算你写了完美的文档,对不起你的SB同事们是不会看文档的。
:
--
修改:z16166 FROM 222.128.162.*
FROM 222.128.162.*
CPP大佬写的是那种千万程序员都要用的库,考虑用起来要方便,所以会精雕细琢,这当然是好的。
而实际开发的现实情况不是这样,作为一个制定技术规范的人,你要考虑的核心是如何在有限资源有限时间内把软件弄出来,并且各种指标要达标、要健壮、能应对千变万化的需求。
应届毕业生中,哪怕是985毕业的,能当场写对冒泡排序的人都是少数,90%根本就没用过异常。这就是现实。一个项目代码量经常会超过百万行,千万行甚至数十亿行都不罕见,并且这些代码绝大多数都是功能性代码,很多精雕细琢的考虑在这个时候会完全失效。如何在一个草台班子写的代码里面避免出现屎山,最直接的办法是两条:
1. 你有个好的架构设计,把各种功能解耦了,就算出现问题也不要扩大化。
2. 你有个简明的编程规范,大家很容易理解并遵循的那种。
很遗憾,C++异常的设计,“大多数”情况下对上面任何一条都是破坏性的。
【 在 z16166 的大作中提到: 】
: 最坏情况下无非就是找各种借口(最常用的借口就是工期)堆shi山
: 但是在shi山上呆久了,觉得整个世界就只有shi山,甚至还要阻止别人爬出shi山,那就有点搞了
: 我根本没兴趣管谁用不用c++异常、滥用还是用得好,只是说cpp大佬推荐用异常(这也是C++板块以前有人提醒我的)。但是你看这楼里还是有一些人抱的是陈旧观点,以为现在的c++异常还需要用指令来建立异常帧,那也算澄清了一下
: ...................
--
FROM 220.207.87.*
boost 有使用异常,但 Qt 整个库不使用异常。
【 在 z16166 的大作中提到: 】
: 你的意思是boost、qt这些库的作者都是SB吗,这两个东西是使用异常的
: 抛了异常,但是事先没提供对应的文档说明,才值得骂吧
--
FROM 36.28.59.*
数十亿行代码的项目真有?不敢相信啊!怎么管理这种工程。超出个人能力了。
【 在 yuanmo 的大作中提到: 】
: CPP大佬写的是那种千万程序员都要用的库,考虑用起来要方便,所以会精雕细琢,这当然是好的。
: 而实际开发的现实情况不是这样,作为一个制定技术规范的人,你要考虑的核心是如何在有限资源有限时间内把软件弄出来,并且各种指标要达标、要健壮、能应对千变万化的需求。
: 应届毕业生中,哪怕是985毕业的,能当场写对冒泡排序的人都是少数,90%根本就没用过异常。这就是现实。一个项目代码量经常会超过百万行,千万行甚至数十亿行都不罕见,并且这些代码绝大多数都是功能性代码,很多精雕细琢的考虑在这个时候会完全失效。如何在一个草台班子写的
: ...................
--
FROM 36.28.59.*
qt类的内部实现不使用异常,官方给的原因一是为了保持对低版本的兼容性,二是因为使用异常会导致库尺寸增加20%。但它提供了QException方便调用者在多线程环境下使用异常。
【 在 hgoldfish 的大作中提到: 】
: boost 有使用异常,但 Qt 整个库不使用异常。
:
--
FROM 222.128.162.*
转isocpp的异常FAQ里的一段话,有点意思,是一种积极的心态,也回答了楼上一些人的argue。机翻:
Q:
我理解前面的FAQ是说异常处理很简单和容易;我的理解对吗?
A:
不!错了!停下来!回去!不要领取200美元。
信息并不是异常处理很简单和容易。信息是异常处理是值得的。好处大于成本。
这里有一些成本:
异常处理不是免费的午餐。它需要纪律和严谨。要理解这些纪律,你真的应该读完剩下的FAQ和/或其中一本关于这个主题的优秀书籍。
异常处理不是万能的。如果你和一个邋遢和无纪律的团队一起工作,不管他们是使用异常还是返回代码,你的团队可能都会遇到问题。能力不足的木匠即使使用好锤子也会干糟糕的活。
异常处理不是一刀切的。即使你已经决定使用异常而不是返回代码,这并不意味着你要把它们用于每件事。这是纪律的一部分:你需要知道什么情况应该通过返回代码报告,什么情况应该通过异常报告。
异常处理是一个方便的替罪羊。如果你和那些责怪他们工具的人一起工作,当心建议异常处理(或任何其他新东西)。那些自我脆弱到需要责怪别人或别的东西的人,为了掩盖自己的错误,总是会无可避免地责怪使用的任何“新”技术。当然,理想情况下,你会和那些有情感能力学习和成长的人一起工作:和他们一起,你可以提出各种建议,因为这些人会找到让它工作的方法,并且在这个过程中你会觉得很有趣。
幸运的是,关于异常的正确使用有很多智慧和洞察力。异常处理不是新事物。整个行业已经看到了许多百万行的代码和许多人世纪的努力使用异常。陪审团已经做出了判决:可以正确地使用异常,当它们被正确使用时,能够提升代码质量。
学习如何做。
※ 来源:·水木社区 mysmth.net·[FROM: 222.128.162.*]
FROM 222.128.162.*
java的exception也是这个德行啊,实际用的时候都是 runtime exception
只是人家有spring全家桶, 把所有的东西都给你封装好了
【 在 yuanmo 的大作中提到: 】
: 因为C++的异常就是根本就搞不清楚,或者说它是一个既要又要还要的乌托邦式的设计。
: 就算你认为你搞清楚了,那也只是你觉得你清楚了。你用的库,你的同事,你的上级你的下属,都有自己各自的理解和习惯,大概率人家还觉得你的理解不对呢。
: 一个无法达成共识的东西,那就是设计有问题,不要怪这一届的用户不行。
: ...................
--
FROM 111.194.200.*
Qt 6 也没看他们改出异常啊。
他们哪里真的在乎低版本的兼容性?笑话,最低 C++ 标准要求 C++ 17. 连 Win7 也不兼容了。
【 在 z16166 的大作中提到: 】
: qt类的内部实现不使用异常,官方给的原因一是为了保持对低版本的兼容性,二是因为使用异常会导致库尺寸增加20%。但它提供了QException方便调用者在多线程环境下使用异常。
--
FROM 180.120.74.*