`
zeroliu
  • 浏览: 196514 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Symbian OS C++学习笔记2异常退出

阅读更多

Ch2. 异常退出(Leave)
------------------------------
替代:设计“异常退出”作为一种简单高效的轻量级异常处理机制。
原因:1,最初设计Symbian OS时,异常还不是C++标准的一部分;2,异常处理增加了编译出来的代码的大小,并带来了运行时存储器的开销;3,Symbian OS强调的是“简介的操作系统和客户代码”,编译器被显式地设定为禁止C++异常处理。
何时:1,调用了xxxL()而没有捕获模块;2,调用了系统函数,如User::Leave()、User::LeaveIfError()、User::LeaveIfNull();3,使用了以ELeave为参数的new操作符重载形式(参Ch2.2)。
标识:以L为后缀的函数。
工具:LeaveScan可用于检查没有正确命名的异常退出函数。
------------------------------
Ch2.2使用new(ELeave)进行基于堆的内存分配(以ELeave为参数的new操作符重载)
示例:CClanger* InitClangerL() {
 CClanger* clanger = new (ELeave) CClanger();
 CleanupStack::PushL(clanger);
 clenger->InitializeL();
 CleanupStack::Pop(clanger);//【虎.无名】PopAndDestory(clanger)将调用析构函数使其完全失效。
 return (clanger);
}
//摘自e32std.h
enum TLeave { ELeave };  inline TAny* operator new(TUint aSize, TLeave);
//e32std.inl
inline TAny* operator new(TUint aSize, TLeave) { return User::AllocL(aSize); }
------------------------------
Ch2.3 构造函数和析构函数(不允许发生异常退出)
------------------------------
Ch2.5 用宏TRAP和TRAPD捕获异常退出,后者申明了result变量,注意多重TRAP/D嵌套问题。
TInt result; TRAP(result, MayLeaveL()); if(KErrNone!=result) { /*...*. }
等价于:TRAPD(result, MayLeaveL()); if(KErrNone!=result) { /*...*. }
使用TRAP式一种昂贵的处理异常退出的办法(可执行文件大小、执行速度,导致“内核执行调用”TTrap::Trap()和TTrap::UnTrap())。应当经可能减少使用TRAP的数量(方法:1)直接抛出;2)调整代码,集中处理xxxL()函数,然后统一TRAP),但每个程序中至少有一个TRAP。
一个原则:确保错误处理(异常退出、返回错误代码)的一致性(二选一)。
------------------------------

分享到:
评论

相关推荐

    Symbian 开发三步曲:Symbian OS C++ For Mobile Phones Ⅰ Ⅱ Ⅲ

    《Symbian 开发三步曲》是一套深入解析Symbian OS C++移动设备开发的专业书籍,由John Wiley & Sons出版社出版。这套书籍分别涵盖了Symbian OS的基础开发、扩展功能编程以及针对S9版本的应用开发,是嵌入式系统...

    SYMBIAN OS C++ 高效编程.pdf

    SYMBIAN OS C++ 高效编程教程

    Symbian OS C++ 手机应用开发(第一卷)

    Symbian OS C++ 手机应用开发(第一卷)续3

    Symbian OS C++ for Mobile Phones(Volume1-3全)

    《Symbian OS C++ for Mobile Phones》是一套完整的教程,涵盖了Symbian操作系统下C++编程的方方面面,包括Volume1、Volume2和Volume3三部分。这套教程旨在帮助开发者深入理解和掌握在移动设备上使用Symbian OS进行...

    《Symbian OS C++ 高效编程》 源码

    2. **C++特性和陷阱**:Symbian OS的C++实现有其特定的规则和约定,例如EPOC Runtimes、RAII(Resource Acquisition Is Initialization)和异常处理。开发者需要了解如何避免常见的陷阱,如对象生命周期管理和内存...

    Symbian OS C++ for Volume 2.rar

    2. **C++编程基础**:深入理解Symbian OS特定的C++编程模式,例如异常处理、线程管理、内存管理(包括自动对象和手动对象)以及Symbian特定的编程技巧。 3. **事件驱动编程**:Symbian OS是基于事件的,学习如何...

    Symbian OS C++手机应用开发.part18.rar

    刚才传了个Symbian OS C++手机应用开发是part01 《Symbian OS C++手机应用开发》 Richard Harrison 著 周良忠 译

    Symbian OS C++ for Mobile Phones volume 2 中文版(Symbian OS C++ 手机应用开发)

    Symbian OS C++ for Mobile Phones volume 2 中文版(Symbian OS C++ 手机应用开发)

    Symbian OS C++手机应用开发.part10.rar

    刚才传了个Symbian OS C++手机应用开发是part01 《Symbian OS C++手机应用开发》 Richard Harrison 著 周良忠 译

    《Symbian OS C++ 手机应用开发》源码(1-2卷)

    《Symbian OS C++ 手机应用开发》是一本深度探讨Symbian操作系统上C++编程技术的书籍,其源码涵盖了1-2卷的内容。Symbian OS曾是智能手机领域的重要操作系统,尤其在诺基亚手机中广泛应用。通过学习这本书的源码,...

    Symbian OS C++ Slides

    ### Symbian OS C++:初次深入探索 #### 引言 Symbian OS C++是一种专门为Symbian操作系统设计的编程语言版本,它在移动设备开发领域具有重要的地位。John Pagonis作为一位资深软件工程师及高级开发者顾问,在这份...

    Symbian OS C++ for Mobile Phones Volume 2

    ### Symbian OS C++ for Mobile Phones Volume 2:深入探讨移动设备上的C++编程 #### 一、书籍概述 《Symbian OS C++ for Mobile Phones Volume 2》是Richard Harrison编著的一本关于在Symbian操作系统上进行C++...

    Symbian OS C++高效编程的源码

    在Symbian OS上进行C++编程,首先需要理解其特有的内存管理机制,因为Symbian OS使用了栈、堆和全局区等不同的内存区域,开发者需要熟练掌握如何有效地分配和释放内存,以避免内存泄漏和异常行为。此外,Symbian OS...

    Symbian OS C++ 手机应用开发(第一卷,中文版).pdf

    “Symbian OS C++ 手机应用开发(第一卷,中文版)”这本书不仅为初学者提供了系统的学习路径,也为有一定基础的开发者提供了深入探索Symbian OS开发领域的宝贵资源。通过学习本书,读者将能够全面掌握Symbian C++...

    [S] W - Symbian OS C++ for Mobile Phones Volume 2.pdf

    《Symbian OS C++ for Mobile Phones Volume 2》是一本深入探讨Symbian操作系统上C++编程技术的专业书籍,由Richard Harrison等多位资深开发者共同撰写。本书是Symbian OS C++系列的第二卷,旨在为读者提供更高级的...

    Symbian OS C++ for Mobile Phones, Volume 1

    《Symbian OS C++ for Mobile Phones, Volume 1》是针对移动设备开发的一款重要的学习资源,主要聚焦于使用C++编程语言在Symbian操作系统上进行应用开发。Symbian OS是过去广泛应用于智能手机的操作系统,尤其在...

    symbian os c++ mobile v3 配套源码code

    本压缩包中的源码code是针对Symbian OS C++ Mobile V3的开发实例,对于想要学习或深入理解该平台开发的人来说,是一份宝贵的学习资源。以下将详细介绍Symbian OS C++开发中的一些关键知识点: 1. **线程与并发**:...

    Symbian.OS.C++手机应用开发(第三卷)PDF.part05.rar

    Symbian.OS.C++手机应用开发(第三卷)PDF,真真的PDF上传文件,要的下载,文件共8个,请一一下载,下载后解压就可以了。 学习Symbian OS 的超经典作品。

    Symbian OS C++手机应用开发

    《Symbian OS C++手机应用开发(第2卷)》可能进一步深入探讨了这些主题,提供了丰富的实例和最佳实践,帮助开发者掌握Symbian平台的精髓。对于有意从事Symbian应用开发的人来说,这本书无疑是宝贵的参考资料。虽然...

Global site tag (gtag.js) - Google Analytics