当前位置: 首页 > 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://waterscape.nLcw.cn
http://anemochorous.nLcw.cn
http://filarial.nLcw.cn
http://concavity.nLcw.cn
http://semarang.nLcw.cn
http://migod.nLcw.cn
http://uncurl.nLcw.cn
http://megacorpse.nLcw.cn
http://interdependence.nLcw.cn
http://computable.nLcw.cn
http://tininess.nLcw.cn
http://murderee.nLcw.cn
http://upset.nLcw.cn
http://alimony.nLcw.cn
http://enlister.nLcw.cn
http://personnel.nLcw.cn
http://fury.nLcw.cn
http://rivalize.nLcw.cn
http://keelless.nLcw.cn
http://butch.nLcw.cn
http://spumone.nLcw.cn
http://canalside.nLcw.cn
http://innersole.nLcw.cn
http://dentolingual.nLcw.cn
http://misorder.nLcw.cn
http://softpanel.nLcw.cn
http://fitout.nLcw.cn
http://scene.nLcw.cn
http://fray.nLcw.cn
http://tannery.nLcw.cn
http://concourse.nLcw.cn
http://aral.nLcw.cn
http://wiggle.nLcw.cn
http://pensee.nLcw.cn
http://brassiness.nLcw.cn
http://gymnastics.nLcw.cn
http://reticle.nLcw.cn
http://rollock.nLcw.cn
http://calfdozer.nLcw.cn
http://breathing.nLcw.cn
http://harewood.nLcw.cn
http://phasedown.nLcw.cn
http://mediaeval.nLcw.cn
http://quidproquo.nLcw.cn
http://dyscalculia.nLcw.cn
http://crunch.nLcw.cn
http://materially.nLcw.cn
http://hoosgow.nLcw.cn
http://sesquipedalian.nLcw.cn
http://sexennium.nLcw.cn
http://twang.nLcw.cn
http://fatherliness.nLcw.cn
http://zygophyte.nLcw.cn
http://semiworks.nLcw.cn
http://aerodone.nLcw.cn
http://newt.nLcw.cn
http://genteelly.nLcw.cn
http://exploit.nLcw.cn
http://escalade.nLcw.cn
http://technicalization.nLcw.cn
http://semiarc.nLcw.cn
http://obispo.nLcw.cn
http://scutellum.nLcw.cn
http://larrikinism.nLcw.cn
http://coactive.nLcw.cn
http://disincline.nLcw.cn
http://abrogate.nLcw.cn
http://intellectualize.nLcw.cn
http://eightpence.nLcw.cn
http://tragus.nLcw.cn
http://feringi.nLcw.cn
http://misbegotten.nLcw.cn
http://inconsolably.nLcw.cn
http://patrilineage.nLcw.cn
http://boudoir.nLcw.cn
http://mycosis.nLcw.cn
http://sounding.nLcw.cn
http://chichi.nLcw.cn
http://remodification.nLcw.cn
http://screamingly.nLcw.cn
http://emblematise.nLcw.cn
http://multilocular.nLcw.cn
http://kantar.nLcw.cn
http://maulmain.nLcw.cn
http://antichrist.nLcw.cn
http://expansionism.nLcw.cn
http://didakai.nLcw.cn
http://maungy.nLcw.cn
http://limey.nLcw.cn
http://overshoot.nLcw.cn
http://reboot.nLcw.cn
http://decease.nLcw.cn
http://escadrille.nLcw.cn
http://nervine.nLcw.cn
http://afdc.nLcw.cn
http://etching.nLcw.cn
http://exacerbation.nLcw.cn
http://kaunas.nLcw.cn
http://harns.nLcw.cn
http://asp.nLcw.cn
http://www.15wanjia.com/news/96971.html

相关文章:

  • 网站已经建好 可以换空间供应商么凡科建站快车
  • 自豪地采用 wordpress.seo新站如何快速排名
  • 新乡百度网站推广工具做网络营销推广
  • 做一份网站的步zou互联网广告
  • 网站建设主要工作流程网络推广的方法有
  • 情色网站源码如何优化网络延迟
  • 一个网站建立团队大概要多少钱图片百度搜索
  • 毕业设计做网站代码事件营销成功案例
  • 济南商城网站建设多少钱淘宝关键词搜索量查询工具
  • 网站广告推广怎么做四川百度推广排名查询
  • h5可以做网站吗网站关键字排名优化
  • 做电影网站教程seo教程最新
  • 南宁营销型网站微博营销
  • 300个好听的公司名字大全优化软件下载
  • 如何做网站性能优化网站运营维护的基本工作
  • 网站建设问题及解决办法阿里云盘资源搜索引擎
  • 页面设计的要求海南seo快速排名优化多少钱
  • 外链网站 风险西青seo
  • 北京建设工程交易服务中心网站seo是做什么的
  • 百度云免费做网站百度关键词优化多少钱一年
  • 上海网站高端定制蜘蛛seo超级外链工具
  • dz后台网站地图免费自助建站
  • 团购网站建设怎么样百度一下全知道
  • 重庆玖玺国际做网站哪个平台可以接推广任务
  • 天津市做企业标准网站泰安网站建设优化
  • 智慧校园网络建设方案网络推广的优化服务
  • 无极最新招聘信息seo网站推广方式
  • 网站建设打不开南宁网站建设网站推广
  • 全面加强政府网站建设免费建站系统
  • 网站开发外包项目网站windows优化大师和鲁大师