不知道,有没有这种感觉,如果不对自己所学的知识进行总结,并将其消化为自己的,是很难加深印象并熟练运用的,所以,一方面是为了激励自己好好学习新的东西,并专研它,另一方面,是为了分享自己所学到的东西。
由于是初次学习Delphi,它并不像之前所学习的语言,由于是第一天写Delphi的博客,所以接下来会有一系列的个人笔记,可能笔记做得不够漂亮,但是专注一点,一天解决一个问题,我相信,日积月累,一定会成为有经验的开发程序员的。
开发环境:Delphi7.0
开发使用控件如下:
。
代码如下,Unit1.pas:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
{要点:1.try...fianlly不管发不发生异常,程序都会执行释放资源的语句;
2.如果发生了异常,它并不处理这个异常,
而是在finally代码被执行后,将其交给其他的合法异常处理程序处理}
begin
i:=6;
try
inc(i);
showmessage('这属于被保护语句'+':'+inttostr(i));
finally
showmessage('处理语句,无论异常是否发生,都必须处理');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j,k:Integer;
{要点:
1.在try...except语句中,Except块包含异常发生时所执行的动作,如果不发生异常,
Except块不被调用 ;
2.在try...except子句中,Except处理了异常,然后便释放了异常对象,程序继续执行;
3.try...except语句通常后面与On..do子句连用
4.raise是不需要释放异常对象,希望外层的异常保护程序能够继续处理该异常,那么就
可以使用raise再次产生相同异常,回退到外层保护程序处理
5.哑异常Abort通常被当做例程终止的过程使用,比如: var i:Integer;
for i:=0 to 10 do
begin
showmessage('I like Java Programming!');
if i:=6 then Abort;
end;
6.Delphi的所有异常继承于Exception,可以定义一个新的异常:如1>type EUserNameInvalid=
class(Exception); 2>如果用户名输入错误的话,则产生异常EUserNameInvalid:if UserName
<> CorrectUserName then raise EUserName.Create('Incorrect UserName Entered');
}
begin
i:=9;
j:=strtoint(Edit1.Text);
k:=i div j;
{
// example1:
try
k:=i div j;
{ if j=0 then
begin
Edit1.Text:='显示except下的内容';
end ; }
//else
//Edit1.Text:=inttostr(k);
raise Exception.Create('test')
{
// example2:
except
on EInvalidOp do Edit1.Text:=inttostr(i); //showmessage('无效操作');
on EZeroDivide do Edit1.Text:=inttostr(i);//showmessage('除数不能为0');
on EOverFlow do Edit1.Text:=inttostr(i); //showmessage('操作溢出');
on ERangeError do Edit1.Text:=inttostr(i); //showmessage('整数表达式越界');
//showmessage('除数不能为0');
{
// example3:
begin
Application.MessageBox(PChar(E.Message), 'error', 16);//抛出异常信息
showmessage(inttostr(i));
showmessage('异常不发生就不处理,发生了才处理');
Button2.Caption:='Good';
end;
}
// end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
showmessage('它和Try...Except语句连用');
end;
end.
如果想要更深入了解的话,可以进入这个链接–笔者觉得会对你有所帮助的:
来自于其他博友对该知识点更详细的介绍,如果想深入,请点击
今天,解决了异常的问题,是不是感觉有点成就感,希望对大家有所帮助。明天晚上见吧!希望一直坚持写下去,不为流量,不为名气,只为喜欢敲代码和喜欢做程序员,让我们共同进步吧。