KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

[M] Prelude to K.O. (4.5) + 12楼(4.75)

[ 15218 查看 / 31 回复 ]

回复:[M] Prelude to K.O. (4.5) + 12楼(4.75)

很明显的不良编程习惯

《effective c++》里有条铁则,绝对不要在析构函数里抛出异常=。=

程序的正常运行很多情况都是建立在,或者说逻辑上都需要析构函数不抛出异常
==================
PS:异常不是用来调试的,是将运行时错误处理与逻辑过程相分离

不知道delphi干嘛要把异常弄得那么复杂,异常处理又不是不要代价的

何况已经抛出异常了,在程序中捕获,打印异常链/栈就知道哪错了=。=
本主题由 管理员 深海蓝空 于 2007/6/9 14:49:31 执行 设置精华/取消 操作
分享 转发

『智代after PS2汉化移植完毕』www.keakon.cn
TOP

回复:[M] Prelude to K.O. (4.5) + 12楼(4.75)

析构函数不抛出异常就行了啊=。=

在里面catch是它的义务,不要把责任推给调用函数,那样增大了耦合度,也不利于封装性

从设计角度,没什么原因需要你析构时抛出异常;能想到的就是提示析构出错(比如关闭文件遇到IO错误)和纯粹为了恶搞

这种情况在析构函数内调用一个函数对象(事先自己注册和定义提示错误的方式),调用后返回就行了;更改那个函数对象,也可以做到更改显示方式;要避免重新编译,将其定义成接口,然后用不同方式实现该接口即可
================
复杂是说异常没必要帮助调试,感觉太过依赖这个不是什么好习惯=。=

『智代after PS2汉化移植完毕』www.keakon.cn
TOP