首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> 专家专栏 >> cofd >> Symbian >> 正文
错误处理和清理
作者:cofd    文章来源:本站原创    更新时间:2005-8-30 3:07:44

    错误处理(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一文。

相关文章:
Symbian中所体现的软件编程艺术
Symbian OS编码诀窍之设计诀窍
使用Peroon实现移植
关于CommDb的一些注释
UIQ 模拟器的Internet
通过更改COM端口访问Internet
连接Symbian模拟器到Internet
如何加速Symbian模拟器
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号