免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xyk6
打印 上一主题 下一主题

哪个语言首先提出“异常处理”,是C++吗? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-12-27 10:06 |只看该作者
原帖由 MMMIX 于 2008-12-26 18:54 发表

考虑异常 != 考虑所有异常。你在偷换概念了



程序语言中的异常处理就是所有异常处理,如C++的try-catch就在考虑所有异常,只是大家习惯性地把“所有”省掉了。

论坛徽章:
0
22 [报告]
发表于 2008-12-27 10:13 |只看该作者
原帖由 MMMIX 于 2008-12-26 18:52 发表

不考虑么?那你家里出去锁门么?


你锁门防贼偷窃,还是防老虎进屋?

这两防的区别: 贼偷窃不是异常事件,老虎进屋是异常事件。

论坛徽章:
3
金牛座
日期:2013-10-12 15:42:452015年辞旧岁徽章
日期:2015-03-03 16:54:15IT运维版块每日发帖之星
日期:2016-06-01 06:20:00
23 [报告]
发表于 2008-12-27 10:21 |只看该作者
异常无非就是出现了不能让程序按预期运行的情况,这时候需要打分支做其他处理。
这在高级语言里,比较重视,也好实现,高级语言本身逻辑性强,考虑的也是业务逻辑;
在低级语言,比如汇编里,一切皆是机器操作。

论坛徽章:
0
24 [报告]
发表于 2008-12-27 11:04 |只看该作者
原帖由 flynetcn 于 2008-12-27 10:21 发表
异常无非就是出现了不能让程序按预期运行的情况,这时候需要打分支做其他处理。
这在高级语言里,比较重视,也好实现,高级语言本身逻辑性强,考虑的也是业务逻辑;
在低级语言,比如汇编里,一切皆是机器操作。



我前面已经说过:不要考虑异常,因为异常都是些不可能发生的情况,如果你非要考虑处理异常,唯一的办法就是什么都不做。

像前面那个锁门的例子,锁门是为了防止陌生人入室,但是如果你锁门是为了防止老虎、狮子、狼、狐狸、大象、鲨鱼、老鹰 ... 进屋, 那你还是把房子拆了吧,房子没了,那些所有异常情况就不会发生。也就是:如果你非要考虑处理异常,唯一的办法就是什么都不做。

[ 本帖最后由 xyk6 于 2008-12-27 11:19 编辑 ]

论坛徽章:
3
金牛座
日期:2013-10-12 15:42:452015年辞旧岁徽章
日期:2015-03-03 16:54:15IT运维版块每日发帖之星
日期:2016-06-01 06:20:00
25 [报告]
发表于 2008-12-27 11:24 |只看该作者
原帖由 xyk6 于 2008-12-27 11:04 发表



我前面已经说过:不要考虑异常,因为异常都是些不可能发生的情况,如果你非要考虑处理异常,唯一的办法就是什么都不做。

像前面那个锁门的例子,锁门是为了防止陌生人入室,但是如果你锁门是为了防止老 ...

异常是程序定制的,你可以只在老虎进门时抛出异常,耗子进门不用理睬。
比如建立链接,延时5秒不叫异常,但延时5分钟就可以抛出异常。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
26 [报告]
发表于 2008-12-27 12:03 |只看该作者
原帖由 xyk6 于 2008-12-27 10:06 发表



程序语言中的异常处理就是所有异常处理,如C++的try-catch就在考虑所有异常,只是大家习惯性地把“所有”省掉了。

瞎说

论坛徽章:
0
27 [报告]
发表于 2008-12-28 23:03 |只看该作者
原帖由 xyk6 于 2008-12-24 15:41 发表
不要考虑异常,因为异常的情况能想多少就有多少,如果你非要考虑处理所有异常,唯一的办法就是什么都不做。

所以,try-catch 又是C++制造的一个没有回收价值的废品!



说的解气,不过现实和理想间总是有个tradeoff的问题,选择发生概率大的错误处理,忽略其他的,不完美,但也只能是那样。

论坛徽章:
0
28 [报告]
发表于 2008-12-29 10:46 |只看该作者
原帖由 xyk6 于 2008-12-27 10:06 发表



程序语言中的异常处理就是所有异常处理,如C++的try-catch就在考虑所有异常,只是大家习惯性地把“所有”省掉了。


有道理

论坛徽章:
0
29 [报告]
发表于 2008-12-29 11:20 |只看该作者
原帖由 thinhare 于 2008-12-28 23:03 发表



说的解气,不过现实和理想间总是有个tradeoff的问题,选择发生概率大的错误处理,忽略其他的,不完美,但也只能是那样。


对于软件来说,异常来自何处?是不是硬件不良引起的,是硬件的原因,就是硬件的责任。当然软件也可以帮点忙,如说看门狗。

论坛徽章:
0
30 [报告]
发表于 2008-12-29 13:19 |只看该作者
原帖由 qvppvq 于 2008-12-29 11:20 发表


对于软件来说,异常来自何处?是不是硬件不良引起的,是硬件的原因,就是硬件的责任。当然软件也可以帮点忙,如说看门狗。


所以,C++专门为异常处理做的throw、try、catch等的确是些让程序员烦心的没有意义的东西。更可气的是,C++里这样没价值的东西实在不少!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP