说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

捕捉来自 Thread 的异常-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
捕捉来自 Thread 的异常-Delphi资料

Thread 是我们进行应用和设计时不可缺少的利器,然而它却不是轻易就可以掌握的。作为一个不可视系统组件,它封装在 TThread 类中,由于一个子线程可以与主线程同时运行,因此,来自子 Thread 的异常在主程序里未必能捕捉到,这样,来自子线程的异常就会导致 Application 的错误甚至是崩溃,也可能造成主程序都结束了,某个Thread 还因等待同步对象的信号还在那儿自己运行着。

所以,对于有必要进行异常控制的 Thread 就必须进行异常处理,这个异常处理模块最好独立于主程序的异常处理模块。我们都知晓对通常异常的捕获都用一个 try..finally 块来处理,而对来自Thread的异常也不例外:

procedure TMyThread.Execute;

begin

try

// 在安全区应该做的工作

except

// 处理所有的异常

end;

end;

通常,这样的处理可以正常的工作,但却不是恰当的解决方法。我们希望不仅把异常信息传递给用户,而且要求在不影响 Thread 继续工作的前提下,由Application或系统单元(致命异常)来进一步处理异常。要做这样处理,首先,我们在自己的 Thread 类里定义一个异常对象,由这个对象承载各种要处理的异常类实例。其次,建立响应异常的同步事件。对 EAbort 消息加以抑制,对来自程序本身的异常由 Application 处理,对系统级异常,一般交与操作系统来完成。

以下是一个简单的异常捕捉应用框架。

unit Unit1;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

Procedure RunThread;

public

{ Public declarations }

end;

TBaseThread = class(TThread)

private

FException: Exception;

procedure DoHandleException;

protected

procedure Execute; override;

//父类函数为虚,在子类再重载其而处理具体事宜

procedure HandleException; virtual;

public

end;

TMyThread = class(TBaseThread)

private

...

protected

procedure Execute; override;

procedure HandleException; override;

...

public

...

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TBaseThread.DoHandleException;

begin

// 关闭当前主窗体对鼠标的响应

if GetCapture <> 0 then SendMessage(GetCapture

WM_CANCELMODE

0

0);

// 判断异常的范围并做相应处理

if FException is Exception then

Application.ShowException(FException)

else

SysUtils.ShowException(FException

nil);

...

end;

procedure TBaseThread.Execute;

begin

FException := nil;

try

...

//处理一些事情

except

//如果发生了异常

HandleException;

end;

end;

procedure TBaseThread.HandleException;

begin

//得到当前异常对象

FException := Exception(ExceptObject);

try

//避免因 EAbort 消息使程序推出

if not (FException is EAbort) then

Synchronize(DoHandleException);

finally

FException := nil;

end;

end;

procedure TMyThread.Execute;

begin

...

end;

procedure TMyThread.HandleException;

begin

...

end;

procedure TForm1.RunThread;

begin

//为 TMyThread 类创建实例

with TMyThread.Create(True) do

begin

FreeOnTerminate := True;

Resume;

end;

end;

...

McAfee CTO Phyllis Schneck被任命为NPPD副部长 Bootstrap 3.0发布 更好地支持移动端和响应式开发 国内创业公司QingCloud的魄力:做一个世界级的IaaS服务 从毫秒到微妙,纯硬的闪存阵列IBM Flash System来了! 中科创达邹鹏程:黑客精神逐渐被人遗忘 有点让人感伤 通过讲故事的方式来设计优秀网站 “肮脏的”IT工作排行榜 Clank:带有SCSS的高效率移动应用原型框架 欧朋 CTO 罗志宇:谈Sphinx游戏引擎的前世今生 John Carmack大神亲手操刀,Oculus Rift SDK即将发布 从南极之争谈软件架构十个技巧,及成功团队具备的气质 Imation重拳出击,推出新型混合存储平台 张建华:FusionSphere不是简单的OpenStack发行版 Chrome 29来了:地址栏变得更“兼容” Android版增WebRTC 工程师谈在Facebook工作最糟糕的事情 用Scala重构19楼——SDCC 2013讲师王治专访 10款最新且超实用的开发框架 创业公司为什么应该写博客? 向iOS SDK看齐:Facebook Android SDK迎来重大更新 闯向海外:对话AppFlood产品总监陈霄 高手爱跨界:联想智能桌面,27寸大Pad抢先试玩 惠普第三季度收入272亿美元同比下降8% 高管重新布局 原来我们会出这个价钱购买“廉价”iPhone Web设计过程中该做和不该做的 新细节披露:通过电信合作 美国75%网络遭NSA监控 实时Bug检测工具Bugsnag发布API更新 【观察】一大三小:亚马逊,微软、谷歌、IBM ,IaaS四足鼎立 “化云为雨”一小滴:北京,3G手机+蓝牙打印机实现智能抄表 金山云与蓝汛联合提供云基础设施服务 MongoDB出新招,增加对Hive的支持 编程语言收入榜 Java排第三 WIN2000机器上ADSL,另一台linux下如何做ADSL的代理让局域网中机器上网! 为什么新生成一个session对象后,jsp page中的scope=session的bean会不正常? ★★oracle中ora-04031错误 请问:在安装MSSQL2000 时(因为公司的电脑是对等网的原因)我装完后出现以下错误: 我应该去东软吗? 请您帮我诊断一下! 如何共享已打开的设备 rs.open sql,conn,3,2参数含义? 我应该去东软吗?? 求救~~~~安装完WINXP,进入系统前会出现错误窗 怎么现在没法用search了? 一个菜鸟的问题,关于事件的加载 求救~~~安装完WINXP,进入系统前会出现错误窗 关于速度,效率,VB IIS ASP COM高手请进 我用extracticon将图标从exe文件中提取出来了,请问高手们,如何保存为ICO文件。 急急急,如何解决多窗口关联及激活问题!高分相送 请教一下,如何刷新ie浏览器,我用postmessage模拟按键F5,没成功,谢谢 怎么样把多个程序打包到一个文件中,然后怎么样释放出来!高分求答案(分两次给100分)! 为什么计算字段不能排序 我是新手,高手教教我吧!!! 如何激活oracle8.16的监听??? Domino Administrator 中的“配置”->“消息处理”->“网络域” C#究竟是什么东东?象C++还是象JAVA? 求dxdbtreeview 1.2 for d5 有人知道天津英业达吗? vb6如何结合DirectX编程? 怎樣才能把數據寫入BIOS中的DMI里去? 我要用vb得到一个EXCEL表格中的内容,经过数据处理再把数据写入新的EXCEL表格,如何实现? 心情不好,散分 我怎樣才能把mssqlserver中的數據庫導出到mysql中? >>有人知道天津英业达吗? 在VC中,如何编写Makefile,及如何用 .mak 文件编译,联接程序(来者有分) 我的电脑经常在使用时出现“EXPLORER出现非法操作即将关闭……”然后死机,怎么办? JavaScript一问!!! windows nt 的问题(急)? 如何设定paradox的自增长自段 关于报表中零值显示问题求助 那位知道控制打印机的win32函数,1、使其打印完毕不换页(卷纸) 2、以及换行的函数!!! 请问怎样捕获WINDOWS的文件拷贝事件? ■■请问WIN2000下对内存区的访问如何进行,类似于游戏修改等软件?■■ 内存分配不能分配?该用什么来分配内存? 做图象处理可以,作这个不可以? 如何将上次表单的残余值给清掉? 如何打开一个窗口? 搞不明白?各位高手帮帮忙!! 如何在win98与2000共同使用同一软件? 有个问题,怪怪怪 高分求救:做单片机的前途怎么样? 如何在VB中制作复杂的动态报表? (新手急需) 一个分页进行选择的问题!!!急呀。。。。。。。。。 虚心求教DataReport打印问题,特着急! 有用DirectX作软件界面的吗?(不是游戏) 作文:我认识到了美kuai ji 关羽的作文 属于自己天空 作文 关于自己 ,600字查不到,写不出来!急 以成长中的往事为话题的作文适合14-16岁学生的 关于关羽的作文初一水平,500字左右 我的故事 作文600字 以往事为话题的作文不下600字,语句优美. 宫斗题目不要别的地方出现过的,最好是你自己创的,比较难的,最好还有答案附送. 我的故事作文600字 必须要故事是感人的 以“往事”为话题的作文谁能给我一篇初一水平的以“往事”为话题的一篇作文, 宫斗.一些些题目.你是刚刚进宫的美人,在御花园中散步,此时,迎面走来骄纵蛮横的柔妃,此时,一日你和一名比你高位的妃嫔衣服撞色,她故意刁难你,你会则麼巧妙回答?1.以《荷花》为题作一首 我的故事作文600字我是要摘抄,不是抄作文 快满7岁了,虽然有些书读不懂,但是有拼音的书.对书不是很了解,既不讨厌,也不喜欢,认为去书店时间很好玩的事情.记得有一次,爸爸带我去斯巴达书店看书,我迫不及待地跟爸爸去了丁字口.因 先前你所提拔的秀女苏氏一跃成了和你平级的惠妃.你也知,虽是平级,可总是在前的得宠,位为德妃的你一日在御花园与她巧遇,听她话里带讥,讽刺你不得宠,你将如何巧言,让苏惠妃明白后妃是 给我一段茶艺描写,是宫斗的才艺谁给我一段茶艺描写咧,宫斗的,感激不尽 写祖国六十年的变化,该怎么写,帮我想个提纲300字左右 这是宫斗题目你和一位比你大的妃子在御花园散步,她不小心自己摔倒了,而她正好怀有龙嗣 ,这么一摔皇嗣便没了,这时旁边只有她和你的贴身宫女,她便把这事赖在你头上 ,皇上龙颜大怒,把你 宫斗才艺表演描写,越多越好 根据满族服装服装发展的过程,说出你的认识和观点500字左右题目自拟 我在N个群都是皇子太子王爷之类的职位```但是宫斗我插不上```给我一些描写服饰之类的```还有爬墙``` 观太空授课有感600字, 感受春天作文叙事文,要取春天的比喻义,400字急!最好今天回答 急..以“经历”为话题,600字作文,求 求《我的梦,中国梦》观后感,400字左右! 宫斗记殿试公主答案汝是并不得宠的公主,且汝的额娘被蔓妃设计陷害说汝并不是皇上的金枝玉叶,此时汝会怎样让皇上相信蔓妃所说并属事实?150字 作文《我的故事》600字左右,要初中水平的. 消防疏散体验作文 800字的 我明白了读书的乐趣作文 关于感受春天的作文 (类似于宫斗的记录)符合题意,字数200字以上,有语言,心理,动作描写5.你为贵人,却几次宠幸而没有子嗣.宫中有一皇子十分亲近你.某日你携皇子在宫中游玩,不料其失足落水.其母对帝子言之 我从 艺术中感受到了美 作文要500字 急 感受春天 作文记叙文 明天就教希望今晚有回答的 《中国梦,我的梦》观后感300字左右 作文:我从书法艺术中感受到了美 关于感受春天作文 宫斗心理描写 去大自然感受生命的美好作文350字以上 作文【我感受到了春天】 急求我的梦中国梦观后感 1000字左右明天要交了 记住:最好自己写 1、近几日来,皇上夜夜在你寝宫过夜,引起了其他妃子的嫉妒,她们趁皇上不在之时来你寝宫羞辱汝,你会怎么办?2、你的好姐妹同你一同进宫,你得到了皇上的宠爱,而她还只是一个小小的秀女,为 宫斗的答题题目~~要虐点啊! 谢谢~ 宫斗动作描写 宫斗题目 在线求答案 帮帮忙1.在一次宴会上,如果汝仅是低位嫔妃,想上前敬酒,但一不小心,酒撒在了某高位并且很得宠的妃子身上,这时,汝该如何是好?2.在问你一些古代的常识:四书五经的五 宫斗答题请问:1、今天在御花园第一次看到皇上、你想好好表现让皇上喜欢你、可是皇后也在身边、你怎么办?2、倘若在你侍寝的时候,忽然有一个十分受宠的嫔妃让人通报说她身子不好,要 开学第一课我的梦中国梦观后感 500字 ①、高位妃相邀御花园,你却有事在身,该如何推却?②、你是新晋的才人,一直无机会得见圣颜.今日皇后听月楼设宴.广邀后宫嫔妃参与.你将如何抓住这次机会,汝当如何借机攀龙附凤?③、后宫 看《美丽中国我的中国梦》的感想.500-800字.帮我列一个提纲,找一些材料. 一篇关于父爱或母爱的作文,600字左右有细节描写,我是初三的,别把父母写的太老 这些宫斗题的答案是什么?求!1. 汝频频得帝宠,却无一子嗣,而后帝也渐渐不来汝的宫中,然则新进宫的新秀却是已怀有龙嗣,在给汝请安之时,便不时冷热讽,汝该如何反击?2.汝进宫已有年余,却从 《美丽中国,我的中国梦》读后感 400字急!快点. 以“15岁,我感悟到了……”为题的600字作文 宫斗题,你是近日皇上新宠安贵人.这日你见阳光甚好,去千鲤池散步,偶遇与你同级的王贵人,言语不和之下,她自己跳入水中.当时身旁只有你和王贵人的奴婢,无其他人.王贵人的奴婢一口咬定你 我需要《美丽中国,我的中国梦》的读后感不要复制的比如“不管是你的梦还是我的梦.”六年级水平400至500字 作文:我和书的故事600字 求以 在一起 为话题的作文4篇 《狼王梦》读后感,围绕我的中国梦主题来写.800字 开学第一课 我的梦 中国梦观后感(350字)2楼的是谁?可笑! 关于关爱的作文,主要是父爱母爱.800字左右,不要网载,题材新颖,关于父爱母爱. 写关羽的作文 开学第一课 我的梦中国梦 观后感 (500字左右)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn