All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
再现C#导出Excel源码_.net资料_编程技术
XP下Asp.net访问被拒绝_[Asp.Net教程]
快速入门-.net的常规命名规范示例_[Asp.Net教程]
C#教程:POP3与SMTP协议使用实例
ASP.NET,应用中大文件上传研究_.net资料_编程技术
asp.net通用数据库访问类[精]_[Asp.Net教程]
C#中多维数组的声明
入门:PHP与MYSQL的结合操作_php资料_编程技术
GridView+FormView,示范数据:,新增、修改、删除
通用高效分页存储过程代码_[SQL,Server教程]
Reading number is top 10 pictures
Ashlynn Brooke show proud chest measurement2
From China fortress sora aoi5
Summer is most suitable for young people to travel in China4
Sell the barbecue as says father du breul5
Discharge accidentally Actresses by the breast1
Group of female porn in 《westwards》, uninhibited woman threatened to not the bottom line
007 James. bond's new lover
From China fortress sora aoi2
这酸爽,让人不敢相信
Sora aoi calligraphy show
Download software ranking
Tram sex maniac 2 (H) rar bag18
豪门浪荡史
虚拟机5.5.3版
Unix video tutorial17
Prostitutes diary
Tram sex maniac 2 (H) rar bag11
Unix video tutorial7
网络管理员第三版
C语言教程TXT
The Bermuda triangle1
aaa published in(发表于) 2014/7/19 0:09:03 Edit(编辑)
delphi中Try...Except 语句和Try...Finally 语句

delphi中Try...Except 语句和Try...Finally 语句

delphi中Try...Except 语句和Try...Finally 语句

Try...Except 语句和Try...Finally 语句

在Try...Except 语句中可以进行抛出异常和处理异常的工作。Try...Except 的一般形式如下:

try

Statements1;

except

on Exception1 do HandleStatements1;

on Exception2 do HandleStatements2;

?

on ExceptionN do HandleStatementsN;

else

Statements2;

end.

对于有些操作,在异常处理部分要进行,在正常情况下也要进行。例如在正常情况下,使用完文件之后关闭文件;如果在对文件操作的过程中出现了异常,也需要关闭已经打开的文件。这时,就可以把关闭文件的过程放在Try...Finally 语句的Finally 部分,不管Try 部分的操作是否正常,都要进行Finally 部分的操作。

通常Try...Finally 语句的形式如下:

try

statementList1

finally

statementList2

end

可以看到,Try...Finally 语句的用法与Try...Except 语句的用法很相似。StatementList1 可以为简单语句,也可以为复合语句。如果在StatementList1 中抛出了异常,程序立即转到Finally 部分;如果在StatementList1 中执行了Exit、Break 或Continue 过程而导致程序的控制离开StatementList1 部分时,程序也会跳转到Finally 部分;如果在Try 部分正常执行完毕,接着执行的还是Finally 部分。

下面的例子介绍了在文件输入/输出时, 怎样用异常处理。可以区分与Try...Except 语句和Try...Finally 语句的用法。

program Project1;

uses

Classes,Dialogs,SysUtils;

{$APPTYPE CONSOLE}

var

F:TextFile;

S:String;

begin

AssignFile(F,’f1.txt’);

try

reset(F);

try

readln(F,s);

finally

CloseFile(F);

end;

except

on EinOutError do

ShowMessage(’Error in FileIO’);

end;

end.

内层的Try...Finally 代码块用来确保文件总是关闭的,而不管是否发生了异常。这段代码的执行过程是:先执行Try 与Finally 之间的代码;如果执行完毕或出现异常,就执行Finally 与End 之间的代码;如果确实有异常发生,就跳到外层的异常处理块。这样,即使出现异常,文件也总是关闭的,并且异常总能得到处理。

注意:在Try...Finally 块中,Finally 后面的语句不管有没有异常都被执行。因此,Finally 后面的语句不能以发生异常为前提。另外,由于Finally 后面的语句并没有处理异常,因此,异常被传递到下一层的异常处理块。

外层的Try...Except 块用于处理程序中发生的异常。在Finally 中关闭文件,并且在Except 块显示一个信息,告诉用户发生了I/O 错误。

种异常处理机制比传统的错误处理方式优越,它使得错误检测代码从错误纠正代码中分离出来。这是一件好事,它会使程序更可读,使得开发人员能够集中处理程序的其他代码。

使用Try...Finally 代码块,但不捕捉特定种类的异常是有一定意义的。当代码中使用Try...Finally块的时候,意味着程序并不关心是否发生异常,而只是想最终总是能进行某项任务。Finally 块最适合于释放先前分配的资源(例如文件或Windows 资源),因为它总是执行的(即使发生了错误)。不过,很多情况下,可能需要对特定的异常做特定的处理,这时候就要用Try...Except 块来捕捉特定的异常。

例如:

Program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils,Dialogs;

var

R1,R2:double;

begin

while True do begin

try

write(’Enter a real number: ’);

readln(R1);

write(’Enter another real number: ’);

readln(R2);

writeln(’The first number divided by the Second is: ’,(R1/R2):5:3);

except

on EInOutError do

ShowMessage(’It is not a valid number! ’);

on EZeroDivide do

ShowMessage(’Can not divide by zero! ’);

end;

end;

end.

尽管在Try...Except 块中可以捕捉特定的异常,也可以用Try...Except...Else 结构来捕捉其他异常。当使用Try...Except...Else 结构的时候,应当明白Else 部分会捕捉所有的异常,包括那些并没有预料到的异常,例如内存不足或其他运行期异常。因此,使用Else 部分时要小心,能不用则不用。当进入不合格的异常处理过程中时,应当触发这个异常。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.