Delphi的学习笔记十七——Exception处理
2013-01-31 16:20
309 查看
异常常用在硬件、内存、I/O和操作系统错误中。
定义并声明一个异常:
语法:
或
Re-raising exception(重新引发一个异常)
Nested Exception(内嵌异常)
try……finally
经常在开发中用到的是以下这种模式即try...except...finally
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;
相关文章推荐
- Delphi的学习笔记十七——Exception处理
- 马哥学习笔记十七——MySQL之用户和权限管理
- C++学习笔记十七-异常
- Delphi的学习笔记十三——属性1
- Python学习笔记整理(十七)异常处理
- (转)delphi chrome cef3 控件学习笔记 (一)
- Python学习笔记(十七):异常-----最后一篇
- DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等
- HTML5基础学习笔记(十七)
- Windows 8 学习笔记(十七)--.WinRT 异步编程
- 西门子PLC学习笔记十七-(不带参数FC编程)
- Silverlight学习笔记十七BingMap(五)之中文地图系统
- delphi操作xml学习笔记 之一 入门必读
- tensorflow学习笔记十七:tensorflow官方文档学习 Convolutional Neural Networks
- 模式识别(Pattern Recognition)学习笔记(十七)--二次判别函数
- c++学习笔记十七
- Delphi-IOCP学习笔记<八>=======服务端的数据发送和JSonStreamObject的编码器
- 大数据学习笔记(十七)-MapReduce
- 软件工程视频学习笔记(十七)
- Swift学习笔记(十七)——导入Foundation使用更多字符串功能