Day1 Delphi三种异常处理的运用

不知道,有没有这种感觉,如果不对自己所学的知识进行总结,并将其消化为自己的,是很难加深印象并熟练运用的,所以,一方面是为了激励自己好好学习新的东西,并专研它,另一方面,是为了分享自己所学到的东西。
由于是初次学习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.

如果想要更深入了解的话,可以进入这个链接–笔者觉得会对你有所帮助的:
来自于其他博友对该知识点更详细的介绍,如果想深入,请点击
今天,解决了异常的问题,是不是感觉有点成就感,希望对大家有所帮助。明天晚上见吧!希望一直坚持写下去,不为流量,不为名气,只为喜欢敲代码和喜欢做程序员,让我们共同进步吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值