您的位置:首页 > 编程语言 > Delphi

Delphi的学习笔记十七——Exception处理

2013-01-31 16:20 309 查看
异常常用在硬件、内存、I/O和操作系统错误中。

try
   AssignFile(F,FileName);
   Reset(F);
except
   on Exception do ...
end;

定义并声明一个异常:

function StrToIntRange(const S:string;Min,Max: Longint) : Longint;
begin
    Result := StrToInt(S);
    if (Result < Min) or (Result > Max) then
   raise ERangeError.CreateFmt('%d is not within the valid range of %d..%d',[Result,Min,Max]);
end;

语法:

try
  X := Y/Z;
except
  on EZeroDivide do HandleZeroDivide;
end;



try
...
except
  on EZeroDivide do HandleZeroDivide;
  on EOverflow do HandleOverflow;
  on EMathError do HandleMathError;
else
  HandleAllOther;
end;


Re-raising exception(重新引发一个异常)

function GetFileList(const Path: string): TStringList;
var
   I: Integer;
   SearchRec: TSearchRec;
begin
   Result := TStringList.Create;
   try
      I:= FindFirst(Path,0,SearchList);
     While I = 0 do
     begin
         Result.Add(SearchRec.Name);
         I := FindNext(SearchRec);
     end;
   except
     Result.Free;
     raise;
   end;
end;



Nested Exception(内嵌异常)

type
  ETrigError = class(EMathError);
function Tan(X : Extended) : Extended;
begin
    try
      Result := Sin(X) /Cos(X);
    except
      on EMathError do
          raise ETrigError.Create('Invalid argument to Tan');
   end;
end;

try……finally

Reset(F);
try
...  //process file F
finally
   CloseFile(F);
end;

经常在开发中用到的是以下这种模式即try...except...finally

procedure TForm1.Button1Click(Sender: TObject);
begin
 try
   try
      showmessage('ok');
    except
       ShowMessage('except');
    end;
  finally
    ShowMessage('finally');
  end
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: