- 浏览: 31544 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
donsun:
refar 写道怎么没了?作者写symbian没饭吃所以写不下 ...
FindBugs缺陷类型统计分析(部分) -
donsun:
哈哈,对不住大家,iteye粘贴表格非常吃力。所以内有耐性就没 ...
FindBugs缺陷类型统计分析(部分) -
蛤蟆仙人:
详细点的吧 资料太难找
FindBugs缺陷类型统计分析(部分) -
baihongsheng:
Method checks to see if result ...
FindBugs缺陷类型统计分析(部分) -
refar:
怎么没了?作者写symbian没饭吃所以写不下去了?
FindBugs缺陷类型统计分析(部分)
Symbian开发异常处理框架
目录
1 异常处理方式: 1
2 异常定义: 1
3 异常提示信息: 2
4 系统级异常处理: 2
1 异常处理方式:
- 提示不做处理(ui/view/db)
- 警告并建议返回MenuPortal(ui/view)
- 警告并返回MenuPortal (ui/view)
- 警告并建议退出系统(ui/view/db)
- 严重警告,必须退出系统(ui/view/db)
2 异常定义:
- #define E_INFO 0x80000000
- #define E_WARN 0x90000000
- #define E_RETURN 0xA0000000
- #define E_ERROR 0xB0000000
- #define E_EXIT 0xC0000000
以上五种异常处理码定义分对应五种异常处理方式,定义业务级异常宏时以上述相加,产生不同的处理方式,例
#define CMS_SAVE_ERROR 0x1
发生异常时:
TRAP(error, cmsvalueDAO->Save(value)); if (error != KErrNone) { CExceptionInfo::Push(_“CMS写入错误!”); User:Leave(ERROR + CMS_SAVE_ERROR); }
上例为视图向UI抛出的一个用户定义异常,处理方式应该为:“警告并建议退出系统”,将由UI捕获并处理。
3 异常提示信息:
异常提示信信除了通用异常与系统级异常可以统一处理外,各业务级异常由产生异常者自行产生或合成,并置入全局可见性的异常信息缓冲区中,由埔获者取出处理。
CExceptionInfo::Push(_“用户信息写入错误!”);
4 系统级异常处理:
对于symbian系统所产生的异常,各层应用皆可埔获和处理,但不建议埔获后继续抛出,更合理的做法是将系统异常升级为业务异常或处理,或抛出!
通常情况下,为了保证系统的健壮性,常引入业务级别容错逻辑,只有遇到不可宽容的错误时,才会抛出。
视图抛出的业务异常以及整个系统各层面抛出而未埔获的异常,将统一由UI处理,自定义异常有五种处理方式,这个不用说了,对于系统异常加以判断和友好提示后只能执行默认异常处理,致命错会在给出用户提示后将退出系统
引人异常机制的目的
- 增强系统健壮性(异常最终捕获处理)
- 提高运行期容错能力(选择性屏蔽下级异常)
- 增强异构环境抗毁能力(数据库与资源访问错误处理)
实施中注意要点:
- 严格控制DAO层面异常,在VIEW或business层捕获,禁止泄漏至UI
- 最大限度的保证系统的正常运行和数据的完整性
- 视图切换或从选择视图返回时要对携带数据做有效性检查
- 抛出异常注意描述要精确
- 公有函数注意const修饰
- 非本块内初始化的指针变量,使用或删除前做非空判断,删除后的指针一定要置空
- Trap操作的系统成本很高,注意尽量少用
- 尽量将错误处理局部化
- ViewActivatedL() 不允许涉及iEikonEnv->AlertWin等类似操作
- 最大限度的保存用户数据,不能让异常破坏了数据或事务的完整性
- 数组操作异常建议捕获
CDesCArrayFlat* iDescFlatBusiType = new (ELeave) CDesCArrayFlat(1); CLEAN_PUSH(iDescFlatBusiType); for (int i = 0; i < iArrBusiTypesFix->Count(); i ++) { TString strBusiType = iArrBusiTypesFix->At(i)->GetBusiness_type_name(); iDescFlatBusiType->AppendL(strBusiType); } User::Leave(-11); CLEAN_POP(iDescFlatBusiType);
系统异常列表:<E32STD.H>
- const TInt KErrNotFound=(-1);
- const TInt KErrGeneral=(-2);
- const TInt KErrCancel=(-3);
- const TInt KErrNoMemory=(-4);
- const TInt KErrNotSupported=(-5);
- const TInt KErrArgument=(-6);
- const TInt KErrTotalLossOfPrecision=(-7);
- const TInt KErrBadHandle=(-8);
- const TInt KErrOverflow=(-9);
- const TInt KErrUnderflow=(-10);
- const TInt KErrAlreadyExists=(-11);
- const TInt KErrPathNotFound=(-12);
- const TInt KErrDied=(-13);
- const TInt KErrInUse=(-14);
- const TInt KErrServerTerminated=(-15);
- const TInt KErrServerBusy=(-16);
- const TInt KErrCompletion=(-17);
- const TInt KErrNotReady=(-18);
- const TInt KErrUnknown=(-19);
- const TInt KErrCorrupt=(-20);
- const TInt KErrAccessDenied=(-21);
- const TInt KErrLocked=(-22);
- const TInt KErrWrite=(-23);
- const TInt KErrDisMounted=(-24);
- const TInt KErrEof=(-25);
- const TInt KErrDiskFull=(-26);
- const TInt KErrBadDriver=(-27);
- const TInt KErrBadName=(-28);
- const TInt KErrCommsLineFail=(-29);
- const TInt KErrCommsFrame=(-30);
- const TInt KErrCommsOverrun=(-31);
- const TInt KErrCommsParity=(-32);
- const TInt KErrTimedOut=(-33);
- const TInt KErrCouldNotConnect=(-34);
- const TInt KErrCouldNotDisconnect=(-35);
- const TInt KErrDisconnected=(-36);
- const TInt KErrBadLibraryEntryPoint=(-37);
- const TInt KErrBadDescriptor=(-38);
- const TInt KErrAbort=(-39);
- const TInt KErrTooBig=(-40);
- const TInt KErrDivideByZero=(-41);
- const TInt KErrBadPower=(-42);
- const TInt KErrDirFull=(-43);
- const TInt KErrHardwareNotAvailable=(-44);
发表评论
-
优酷屏蔽广告方法(2014-11-11已验证)
2014-11-07 17:57 704广告是免费媒体网站 ... -
转载:网站分析KPI汇总
2012-06-24 14:24 848转载:网站分析KPI汇总 ... -
转载:网站分析基础概念之网页与网页浏览数
2012-06-24 14:23 802转载:网站分析基础概念之网页与网页浏览数 网站分析基础 ... -
转载:网站分析基础概念之访问数
2012-06-24 14:22 758网站分析基础概念之访问数 ... -
转载:网站分析基础概念之维度与度量
2012-06-24 14:21 959网站分析基础概念之维度与度量 ... -
网站分析的烦恼连载(优化篇下)
2012-06-12 13:31 762原文出处:数码林博客 http://blog.digital ... -
网站分析-这里好像有问题!(一)
2012-06-12 13:29 765原文出处:数码林博客 ... -
网站分析-这里好像有问题!(二)
2012-06-12 13:28 713原文出处:数码林博客 http://blog.digital ... -
网站分析的烦恼连载(战略篇上)
2012-06-12 13:26 673原文出处:数码林博客 ... -
FindBugs缺陷类型统计分析(部分)
2010-06-23 14:17 6055FindBugs缺陷类型统计分析(部分) 目录 1 ... -
WM应用开发中DotNet Compact framework版本的选择
2010-05-31 08:44 1492WM应用开发中DotNet Compact framewo ... -
Symbian移动端SSL改造方案调研——基于主线程创建活动对象与SSL服务器交互模型
2010-05-30 13:46 1405Symbian移动端SSL改造方案调研 ——基于主线程创 ... -
DotNet托管C# VS DotNet托管C# 调用C++本地代码
2010-05-28 15:45 1573DotNet托管C# VS DotNet托管C# 调用C++本 ... -
java mem report vm java 虚拟机 http web 2.0 web3.0 c# doc vba
2010-05-24 17:03 854java mem report vm java 虚拟机 ht ... -
Java系统内存泄漏分析
2010-05-21 15:23 1632Java系统内存泄漏分析报 ... -
数据中心无缝热迁移解决方案
2010-05-18 14:48 55数据中心无缝热迁移解 ... -
FindBugs在项目中的应用
2010-05-18 09:04 1317FindBugs在项目中的应用 目录 1 FINDBUGS ... -
Symbian内存优化方案
2010-05-17 12:50 998Symbian内存优化方案 1 ...
相关推荐
书中详细介绍了Symbian OS的基础架构,包括其微内核设计、进程与线程管理、内存管理和异常处理机制。此外,还详细讲解了如何编写高效、安全的C++代码,以及如何进行设备驱动和系统服务的开发。对于初次接触Symbian ...
本课件聚焦于Symbian OS的C++异常处理机制,这对于理解和开发Symbian平台的应用程序至关重要。 异常处理是编程语言中用于处理程序运行时错误的一种机制。在C++中,异常处理允许程序员在代码执行过程中捕获和处理...
通过分析实例源代码,我们可以学习到如何组织Symbian应用程序结构,如何使用特定的API进行系统调用,以及如何处理Symbian特有的错误和异常。同时,实例代码还可以帮助我们理解如何进行性能优化,如内存管理、资源...
掌握资源管理,理解Symbian中的异常处理和内存管理机制。 7. **UI设计**:Symbian OS支持多种用户界面框架,如UIQ、Series 60和Series 80/90等。了解这些框架的特点和使用方法,学习创建和管理视图、对话框和控件。...
2. **C++编程基础**:Symbian主要使用C++进行开发,因此掌握C++语言的基本语法、类和对象的概念、模板、异常处理等是必不可少的。同时,Symbian有其特定的编程规范,比如EPOC Runtimes和Symbian C++ STL的使用。 3....
Symbian os C++开发课件 第一章 概述.pps 第二章 Symbian概述.pps 第三章 使用SDK开发程序.pps 第四章 基本的类、字符串和动态数组.pps 第五章 内存分配及异常处理.pps 第六章 GUI应用程序框架....
理解和使用Symbian特有的编程概念,如RC(Resource Control)管理、RAII(Resource Acquisition Is Initialization)原则和异常处理。 2. **用户界面开发**:Symbian OS提供了一系列UI组件,如对话框、菜单、列表...
3. **掌握异常处理**:Symbian系统中,错误通常以异常的形式出现,源码会展示如何捕获和处理这些异常,以确保程序的健壮性。 4. **学习资源管理**:Symbian系统对资源管理有严格的要求,如文件、内存和系统对象。...
熟悉Symbian对象所有权的概念,这有助于避免内存泄漏和异常处理。 ### 3. UI设计与实现 Symbian提供了一个基于C++的图形用户界面(GUI)框架,如Qt和Series 60 Platform SDK。学习如何使用CAknAppUi、CAknView等...
3. **Qt for Symbian**:虽然Symbian OS原生支持EPOC C++,但后来引入了Qt框架,使得开发者可以使用更现代化的跨平台工具包开发Symbian应用。Qt简化了用户界面的创建,并提供了一套丰富的API。 4. **UI设计**:...
2. **EPOC Runtimes**:这是Symbian系统的基础,包括基本的数据类型、字符串处理、内存管理和异常处理。熟悉EPOC的运行时环境是编写Symbian应用的起点。 3. **Thread和Synchronization**:Symbian强调多线程编程,...
《Symbian编程入门教程》是一份专为初学者设计的教育资源,旨在引导读者步入智能手机平台Symbian的开发世界。这份教程包含了丰富的知识体系,涵盖了Symbian操作系统的基础概念、编程模型以及实际应用开发的步骤。...
9. **异常处理**:Symbian OS有特定的异常处理机制,源码中会体现如何使用Try-Catch结构来处理运行时错误。 10. **性能优化**:由于Symbian OS运行在资源受限的设备上,源码可能包含针对CPU、内存和电池寿命的优化...
4. **EPOC C++**:Symbian的C++语法有其独特性,被称为EPOC C++,包括资源对象、异常处理、线程同步等特性,这些都是开发Symbian应用的基础。 5. **UI设计**:Series 60平台上的用户界面设计需要遵循特定的指导原则...
Symbian主要使用C++,但其对C++进行了特定的扩展和优化,例如EPOC运行时环境和异常处理机制。开发者需要熟悉这些特性和最佳实践,以便编写出高效且健壮的代码。 内存管理是Symbian开发中的一个关键领域。由于硬件...
3. **C++编程**:Symbian主要采用C++语言进行开发,书中会详细阐述Symbian C++编程规范,如EPOC类库、异常处理、内存管理策略等。 4. **Qt for S60**:虽然S60第三版主要基于原生API,但可能也会提及Qt框架,它是...
3. **错误处理**:Symbian OS 使用异常处理和返回错误码两种方式来处理错误,开发者需要熟练掌握这两种机制。 **三、Symbian SDK与开发环境** 1. ** Carbide.c++**:这是Symbian的主要集成开发环境,提供了代码...