- 主题:异常这玩意儿当初是哪个脑残发明出来的?
我日常使用 timeout 都是在协程里面用的。
这个 timeout 的实现也是协程对回调的巨大优势。
【 在 speedboy2998 的大作中提到: 】
: 现在都是异步 IO,没有谁的代码在这里傻傻地等 N 秒吧。
: 我觉得调用异步 IO,设置一个回调,不管是 IO 成功了或者异常了,都在回调函数里处理,检测状态码就行。。不比异常好更多?
: 异常最大的问题是:程序的逻辑思维变得支离破碎。
: ...................
--
FROM 117.28.110.*
其实异常最大的问题,可能是人员要从上到下都得跳出自己的舒适区(局部的返回码),哈哈
--
FROM 221.218.161.*
工具是给人用的,一个设计要搞到所有人都不舒适,然后也拿不出一个大部分人觉得舒适的使用方法,足以说明这是一个失败的设计。
【 在 z16166 的大作中提到: 】
: 其实异常最大的问题,可能是人员要从上到下都得跳出自己的舒适区(局部的返回码),哈哈
--
FROM 124.64.23.*
我总结的适用于异常的地方就是,那种出错概率很大,出错原因很多,且出错现场和处理错误现场距离很远的场合。这种情况下靠层层返回值检查逐级上报,会非常麻烦。
诸如网络IO错误是我们认为比较适合的地方,当然这个可能跟你们使用的方式不一样,以及上层处理策略也不一样。
【 在 hgoldfish 的大作中提到: 】
: 我倒是认为 IO 错误不应该用异常来表示。因为 IO 错误太常见了。我们做网络开发的,时时都要注意网络断了数据包发不出去。
: 我喜欢最喜欢的异常是 bad_alloc,这个异常抛出来之后,对于程序员基本上啥事都不需要处理,直接整个程序崩溃掉就行。完全没有思维负担,这样的异常谁不喜欢啊。
: 我另外只使用两个异常,一个是 timeout 异常,一个是 kill 协程异常。这两个功能必须使用异常才能做好:
: ...................
--
FROM 124.64.23.*
nod
【 在 yuanmo 的大作中提到: 】
: 工具是给人用的,一个设计要搞到所有人都不舒适,然后也拿不出一个大部分人觉得舒适的使用方法,足以说明这是一个失败的设计。
:
--
FROM 218.76.62.*
你说得有些道理
不过所有人都不舒适未必是事实,比如已经在用异常的那些人(但不是滥用)
还有种可能是有些问题也许就没有很简便的解决办法,类似Rust搞的那些用来解决c++没很好地解决的问题而引入的特性,c++码农刚接触这些特性时可能也会觉得处处受掣肘,很不爽,连个双向链表都搞不出来。越过这个阶段后会好很多。
而且不能把自己的惰性甩锅给某些特性,c++那些guru没强迫人用异常,而只是极力推荐用异常
【 在 yuanmo 的大作中提到: 】
: 工具是给人用的,一个设计要搞到所有人都不舒适,然后也拿不出一个大部分人觉得舒适的使用方法,足以说明这是一个失败的设计。
:
--
FROM 221.218.161.*
布道者太可怕,尤其夹带私货
--
FROM 61.149.143.*
哪些是私货?
有些人连guru的书都没读过,对异常的看法完全凭自己的经验和猜测,这才是可怕的地方。
之前有人连异常的实现,都不舍得花时间反汇编看看(也可能看不懂汇编),就断言还是每个函数有prolog和epilog的大开销
【 在 hhoking2012 的大作中提到: 】
: 布道者太可怕,尤其夹带私货
--
修改:z16166 FROM 221.218.161.*
FROM 221.218.161.*
出错概率很大的话就应该用返回值啊。强制程序员的各层代码里面都要考虑 IO 出错的可能性。
我看很多程序员都不考虑写 buf 只写入一半的场景。所以现在好多系统函数会特别弄个强制要求程序员处理返回值的警告。特别是涉及到安全的 setuid() 这种。这是非常好的习惯。
其实不止程序员是这样的。操作系统自己也有问题, close() 也应该有返回值的啊。
【 在 yuanmo 的大作中提到: 】
: 我总结的适用于异常的地方就是,那种出错概率很大,出错原因很多,且出错现场和处理错误现场距离很远的场合。这种情况下靠层层返回值检查逐级上报,会非常麻烦。
: 诸如网络IO错误是我们认为比较适合的地方,当然这个可能跟你们使用的方式不一样,以及上层处理策略也不一样。
--
FROM 14.19.13.*
对了,我也没有看过。之前在本版有提到过, amd65 架构下使用下使用查表实现。那么应该是 throw 没有开销,catch 也没有开销,但 try 有开销吧?
另外, i386, arm32 和 arm65 架构下的开销不知道怎么样呢?
【 在 z16166 的大作中提到: 】
: 哪些是私货?
: 有些人连guru的书都没读过,对异常的看法完全凭自己的经验和猜测,这才是可怕的地方。
: 之前有人连异常的实现,都不舍得花时间反汇编看看(也可能看不懂汇编),就断言还是每个函数有prolog和epilog的大开销
: ...................
--
修改:hgoldfish FROM 14.19.13.*
FROM 14.19.13.*