错误处理与异常的困扰

wb19822002 2005-11-04 02:55:41
1. Windows API中的许多函数都要检查返回值,如果出错还要释放掉之前分配的资源,虽然有“结构化异常处理机制(SEH)”,但感觉比goto强不了多少,不是很爽。
(1)是不是每个会出错的函数都要检查?
(2)有没有更好的结构化办法?
(3)如果出错处理中,释放资源(如VirtualFree())时出错怎么办(有点像C++析构函数抛出异常)?重试多次?为什么C++中的delete不会出错?它的实现用了什么手法?

2. C++中的“异常安全”好像是很麻烦的东西,不知大家怎么看?



请高手指教
...全文
203 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sankt 2005-11-17
  • 打赏
  • 举报
回复
再次学习
wylove 2005-11-07
  • 打赏
  • 举报
回复
用户在调用类的成员函数时,不易识别该错误。而作为该类的设计者,我们却有能力识别这一问题:该类不再处于有效状态,再也不能被程序继续使用下去,但是我们不知道这个问题对于整个程序的危害程度究竟如何——只有使用该类的用户知道问题的严重性。因此,我们的职责就是通知用户,告诉他发生了什么事、而C++的异常处理机制(exception handling facility)就是来完成通知任务。

所以异常处理有他自己的特点,根据实际需要来使用。
wb19822002 2005-11-06
  • 打赏
  • 举报
回复
自己顶一下

1.如果出错处理中,释放资源(如VirtualFree())时出错怎么办(有点像C++析构函数抛出异常)?重试多次?为什么C++中的delete不会出错?它的实现用了什么手法?

2.“大的C++项目中异常处理要么不做,要么在底层做好,不会让每个程序员都去使用异常的”,能不能再具体一点,给点做大项目的经验。
yhbttfile 2005-11-04
  • 打赏
  • 举报
回复
引入异常,就不得不关注GUARD。
因为异常可以在任何可以抛出异常的地方中断程序的执行。而GUARD技术通过析构函数来释放资源,所以可以避免资源泄漏问题。
析构函数绝对不要抛出异常,否则是自找麻烦。
doway 2005-11-04
  • 打赏
  • 举报
回复
楼主看过<Windows 核心编程>没有?该书被大多数朋友认为是经典型的那种书。该书中说不要使用 SEH,应该用 C++ 的异常处理。
sankt 2005-11-04
  • 打赏
  • 举报
回复
过来学习的
ifeelhappy 2005-11-04
  • 打赏
  • 举报
回复
关注
fiftymetre 2005-11-04
  • 打赏
  • 举报
回复
异常就是个累赘,过多的异常处理只会让项目更加混乱,可以采用错误处理的方法减少异常的使用。大的C++项目中异常处理要么不做,要么在底层做好,不会让每个程序员都去使用异常的
wb19822002 2005-11-04
  • 打赏
  • 举报
回复
那做系统软件开发时,异常安全是否要作专门的设计和考虑,怎么做,做到什么程度?
jsjjms 2005-11-04
  • 打赏
  • 举报
回复
(1)是不是每个会出错的函数都要检查?
========================================
很多地方都有出错的可能,你要检查也检查不到那么多的.主要看你的
程序流程怎么摆布了.
jsjjms 2005-11-04
  • 打赏
  • 举报
回复
异常安全本来就是一个非常麻烦和复杂的东西,它牵涉到软件的健壮性和稳定性.
吉祥的吉 2005-11-04
  • 打赏
  • 举报
回复
顶一下!

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧