ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 错误处理和清理(转)

错误处理和清理(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-05-15 13:18:05 0 删除 编辑
错误处理(Error Handling)和清理(Cleanup)是Symbian OS至关重要的一部分。编写每行代码,或者是读到每行代码都会因为清理而受到影响。"清理是Symbian OS编程的基础。"

Symbian OS 错误处理和清理框架不仅仅只是对内存不足(OOM-out of memory)错误有用,很多操作如读写文件、通信会话中发送和接受数据的错误也可以处理,甚至用户的输入错误也能利用清理框架来处理。只有一种错误-编程错误,清理框架无法处理。但Symbian OS提供了足够的诊断信息,便于找出错误并修正错误。

一、处理内存不足的错误

  1. 使用GUI框架提供的调试键(参考Sdk的Developer Library)
  2. 堆检查工具。通过嵌套使用_UHEAP_MARK和_UHEAP_MARKEND来检查分配的内存是否释放。注意只能用来debug
  3. 正确的销毁对象。用析构函数来销毁所拥有的对象
  4. ELeave。使用New(ELeave)代替New()。但不能分配内存时则异常退出
  5. 在任何可能异常退出的函数名尾部加上L
  6. 异常捕获机制。TRAPD(error, FunL())捕获错误
  7. 清理栈(cleanup stack)。清理栈解决如下问题:对象在堆上分配的,但是指向它的指针却是自动变量。不要把成员变量推入清理栈。
  8. 两阶段构造。c++构造函数不应该包含任何可能异常退出的函数,对可能异常退出的构造使用ConstructL().

二、用户错误

常见的一种情形是处理用户输入的错误。在一个对话框中处理"ok"按钮的函数(一个改写的CEikDialog::OkToExitL())必须

  • 从对话框控件中获得每个值
  • 验证这些值
  • 将这些值传给要执行某步操作的函数

OkToExitL()函数一个典型的编程模式就是在每个控件中,使用自动变量来包含T类型的值,或者指向一个C类型的值。

如果在OkToExitL()函数的处理过程中,在任意阶段发现非法内容,就需要

  • 给用户显示一条消息,指出问题的所在
  • 清理所有从对话框控件中提取的值,即在堆上分配的所有内容
  • 返回

详细描述请参考Developer Library中Coding Idioms for Symbian OS.pdf一文。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126351/,如需转载,请注明出处,否则将追究法律责任。

上一篇: hellogui.app(转)
请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    2820
  • 访问量
    2071112