当前位置: 首页 > news >正文

网站做程序需要多久建网站

网站做程序需要多久,建网站,大连制作网站多少钱,武汉市党风廉政建设网站9.2 finally 代码块 ​ 还有第四个用于异常处理的关键字,我已经提到过,但到目前为止还没有使用过,那就是 finally。finally块用于执行一些应始终执行的操作(通常是清理操作)。事实上,无论是否发生异常&…

9.2 finally 代码块

​ 还有第四个用于异常处理的关键字,我已经提到过,但到目前为止还没有使用过,那就是 finallyfinally块用于执行一些应始终执行的操作(通常是清理操作)。事实上,无论是否发生异常,finally 代码块中的语句都会被处理。只有在未出现异常或出现异常并已处理的情况下,才会执行 try 代码块后面的普通代码。换句话说,即使出现异常,finally 代码块中的代码也总是在 try 代码块的代码之后执行。

​ 请看这个方法(ExceptFinally 示例的一部分),它执行一些耗时的操作,并在窗体的标题中显示其状态:

procedure TForm1.BtnWrongClick(Sender: TObject);
varI, J: Integer;
beginCaption := 'Calculating';J := 0;// 长时间的(错误的)计算...for I := 1000 downto 0 doJ := J + J div I;Caption := 'Finished';Show('Total: ' + J.ToString);
end;

​ 由于算法中存在错误(因为变量 I 的值可以达到 0,而且还用于除法),程序会中断,但不会重置窗体标题。这就是 try-finally 块的作用:

procedure TForm1.BtnTryFinallyClick(Sender: TObject);
varI, J: Integer;
beginCaption := 'Calculating';J := 0;try// 长时间的(错误的)计算...for I := 1000 downto 0 doJ := J + J div I;Show('Total: ' + J.ToString);finallyCaption := 'Finished';end;
end;

​ 当程序执行该函数时,无论是否出现(任何类型的)异常,都会重置游标。此版本函数的缺点是无法处理异常。

9.2.1 finallyexcept

​ 耐人寻味的是,在 Object Pascal 语言中,一个 try 代码块后面可以跟一个 Exceptfinally 语句,但不能同时跟这两个语句。鉴于您经常希望同时使用这两个块,典型的解决方案是使用两个嵌套的 try 块,内部块与 finally 语句相关联,外部块与 except 语句相关联,或者根据情况反之亦然。下面是 ExceptFinally 示例中第三个按钮的代码:

procedure TForm1.BtnTryTryClick(Sender: TObject);
varI, J: Integer;
beginCaption := 'Calculating';J := 0;trytry// 长时间的(错误的)计算...for I := 1000 downto 0 doJ := J + J div I;Show('Total: ' + J.ToString);excepton E: EDivByZero dobegin// 使用新消息重新引发异常raise Exception.Create('Error in Algorithm');end;end;finallyCaption := 'Finished';end;
end;
9.2.2 使用 finally代码块恢复光标

try-finally 块的一个常见用例是资源的分配和释放。另一种相关情况是在操作完成后需要重置临时配置,即使该操作引发了异常。

​ 需要还原的临时配置设置的一个例子是沙漏光标,它在长时间操作中显示,并在操作结束后还原为原来的光标。即使代码很简单,也总有可能出现异常,因此应始终使用 try-finally 块。

​ 在 RestoreCursor 应用程序示例(一个 VCL 应用程序,因为 FireMonkey 中的光标管理比较复杂)中,我编写了以下代码,用于保存当前光标,将其临时设置为沙漏光标,并在操作结束时恢复原始光标:

varCurrCur := Screen.Cursor;Screen.Cursor := crHourGlass;
try// 一些耗时操作Sleep(5000);
finallyScreen.Cursor := CurrCur;
end;
9.2.3 使用托管记录恢复光标

​ 要保护资源分配或定义要还原的临时配置,可以使用托管记录来代替显式的 try-finally 块,这需要编译器添加一个固有的 finally 块。这样,即使在定义记录时需要付出一些初始努力,保护资源或恢复配置的代码编写量也会减少。

​ 这是一个托管记录,代表了上一节代码的相同行为,即在 Initialize 方法中将当前游标保存在一个字段中,并在 Finalize 方法中将其重置:

typeTHourCursor = recordprivateFCurrCur: TCursor;publicclass operator Initialize(out ADest: THourCursor);class operator Finalize(var ADest: THourCursor);end;class operator THourCursor.Initialize(out ADest: THourCursor);
beginADest.FCurrCur := Screen.Cursor;Screen.Cursor := crHourGlass;
end;class operator THourCursor.Finalize(var ADest: THourCursor);
beginScreen.Cursor := ADest.FCurrCur;
end;

一旦定义了这个托管记录:

varHC: THourCursor;
// 一些耗时操作
Sleep(5000);

注解:你可以在 Erik van Bilsen 的以下博文中找到更多通过托管记录保护资源的例子: https://blog.grijjy.com/2020/08/03/automate-restorable-operations-with-custom-managed-records/。这是一系列关于托管记录的详细博客的一部分。

http://www.mmbaike.com/news/52835.html

相关文章:

  • 点胶喷嘴技术支持东莞网站建设google服务框架
  • 做网站的好框架吉林seo刷关键词排名优化
  • 怎么做一考试网站整站seo优化公司
  • 大人小孩做网站网络seo是什么
  • 临沂建手机网站公司软文发布
  • seo提权软件seo网站优化培
  • 网站建设模板平台如何让百度快速收录
  • 在兔展上怎么做网站页面百度seo优化培训
  • 5118网站教育培训班
  • 阿坝州住房和城乡建设厅网站优化大师 win10下载
  • 查询网站怎么做网站建设多少钱
  • 淘宝官网首页入口手机北京关键词seo
  • 旅游景区门户网站建设规划方案windows 优化大师
  • wordpress ico 上传金华seo扣费
  • seo外贸网站建设市场营销经典案例
  • 网站建设优化是什么鬼seo关键词排名优化系统
  • 深圳南头高端网站建设成功的品牌推广案例分析
  • 网站免费网站免费片黄入口蜜桃观看射破屁屁爱站网长尾关键词挖掘查询工具
  • 潍坊建筑公司排名百度seo综合查询
  • 如何把自己做的网站 放在网上百家号关键词seo优化
  • seo网站建设优化什么意思sem竞价托管多少钱
  • 北京网站开发网站建设咨询专业seo优化公司
  • 温州网站建设活动近期国际热点大事件
  • 做网站的心得seo怎么做新手入门
  • 电影网站如何建设优化网站推广教程排名
  • 做网站前台模板seo网络营销招聘
  • 青岛网站seo价格网络平台运营是做什么的
  • 成华区住房和城乡建设厅网站企业网站建设
  • 怎么免费制作企业网站网站设计与制作教程
  • wordpress 开启sslseo优化网站快速排名