symbian的应用程序中,如何处理申请内存失败的异常的一些讨论

本文探讨了Symbian平台中异常处理的最佳实践,包括如何合理地使用leave异常,何时及如何保存重要数据,以及如何避免框架误处理异常导致的应用逻辑错误。作者还讨论了在资源受限的情况下保证程序稳定性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你的应用并不是必须存在的,不要捕获这个异常,直接退出吧。
如果有些对用户来说比较重要的数据,可以尝试在退出前保存一下。
如果数据非常重要,最好还是周期性的保存比较好。

手机都可以死机,程序退出并不是什么大不了的。

如果你的应用实在太关键了,比如没有这个程序用户就活不了...嘿嘿
可以预先保留一部分内存空间,在内存不足的时候用这部分内存。或者
在分配堆栈的时候保留足够的内存。或者在异常的时候停止不那么关键
的任务,释放不那么重要的对象,只要留下来能让用户活着的 ok 了...

 

 

 

2nd 会直接退出,你就不需要操心了。 3rd 会吞掉这个错误,
似乎会谈一个对话框报告错误。但是我对 3rd 这个框架有点儿
意见,呵呵。这可能把应用逻辑搞坏掉。

比如程序正在执行某个操作,设置一个系统状态,等操作完成后清
除这个状态。但是操作过程中leave了,于是系统状态没有恢复,
leave 又被框架吞掉了。最后程序看起来没有死,但是却不能正
常工作。这还不如退出好。

对于这种情况只能自己TRAP,判断错误原因。对于能处理的,比如
程序设定的一些错误,恢复系统状态,提醒用户或者继续后续操作。
对于不能处理的错误,还是直接调用 panic 退了吧

这时候调用 UI 的 HandleCommand(EEikCmdExit)不太好,
这是正常的退出方式。异常就要有异常的退出方法,呵呵。

活动对象 RunL 里如果 leave 的话,会进入 RunError,这
个时候有机会恢复系统状态。如果错误不能处理,也应该 panic。

不过 leave 导致程序逻辑错误的情况只是一部分,如果没有这种
可能的话,就让系统框架处理吧。


by mayflowers
 
 
 
 
Symbian提供了new(ELeave)操作保证创建对象要么成功要么失败,如果失败就会抛出leave,应用程序的框架会捕捉进行处理,自己也可通过TRAP或TRAPD处理.使用它的好处就是不需要自己在后面判断是申请是否成功.


Beover1984
 
 
做终端有个好处, 多数操作都是有用户出发的, 那么没内存了, leave, 网络操作失败了, leave, 没有存储空间了, leave, 交由symbian应用程序框架处理, 或者有好点, 自己在逻辑顶层捕获一下, 给用户个有好点的提示就行了, 用户决定是重试还是什么的, 不向后台业务, 必须向办法处理, 用户关闭其它应用, 释放磁盘空间,或者出了电梯重试一下, 就好了, 不用程序多做工作



qxiaoyuan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值