RAD Studio VCL Reference
|
Instantiates an instance of an exception with a simple message string.
constructor Create(const msg: string);
__fastcall ECustomException(const AnsiString msg);
Call Create to construct an exception object with a simple message string.
Msg is the string containing the runtime error message to display in the exception dialog box. Msg can be a hard-coded string, or can be a function call that returns a string.
C++ Examples:
/* The following example creates a directory ‘C:\temp’ if it does not already exist. } */ #include <Filectrl.hpp> void __fastcall TForm1::Button1Click(TObject *Sender) { if (!DirectoryExists("c:\\temp")) { if (!CreateDir("C:\\temp")) throw Exception("Cannot create c:\\temp directory."); } if (!CreateDir("C:\\temp")) throw Exception("Cannot create C:\\temp again!"); }
Delphi Examples:
{ The following example creates a directory ‘C:\temp’ if it does not already exist. } uses FileCtrl; procedure TForm1.Button1Click(Sender: TObject); begin if not SysUtils.DirectoryExists('C:\temp') then if not CreateDir('C:\temp') then raise Exception.Create('Cannot create C:\temp'); if not CreateDir('C:\temp') then raise Exception.Create('Cannot create C:\temp again!'); end;
{ The following example uses a button, a string grid, and a Save dialog box on a form. When the button is clicked, the user is prompted for a filename. When the user clicks OK, the contents of the string grid are written to the specified file. Additional information is also written to the file so that it can be read easily with the FileRead function. } procedure TForm1.Button1Click(Sender: TObject); var BackupName: string; FileHandle: Integer; StringLen: Integer; X, Y, I: Integer; colCountLength, rowCountLength: Integer; Buffer: PChar; cellString: string; begin if SaveDialog1.Execute then begin if FileExists(SaveDialog1.FileName) then begin BackupName := SysUtils.ExtractFileName(SaveDialog1.FileName); BackupName := ChangeFileExt(BackupName, '.BAK'); if not RenameFile(SaveDialog1.FileName, BackupName) then raise Exception.Create('Unable to create backup file.'); end; FileHandle := FileCreate(SaveDialog1.FileName); { Write out the number of rows and columns in the grid. } colCountLength := SizeOf(StringGrid1.ColCount); FileWrite(FileHandle, Pchar(StringGrid1.ColCount), colCountLength); rowCountLength := SizeOf(StringGrid1.RowCount); FileWrite(FileHandle, PChar(StringGrid1.RowCount), rowCountLength); for X := 0 to StringGrid1.ColCount - 1 do begin for Y := 0 to StringGrid1.RowCount - 1 do begin try { Write out the length of each string, followed by the string itself. } StringLen := Length(StringGrid1.Cells[X,Y]); FileWrite(FileHandle, PChar(StringLen), SizeOf(StringLen)); GetMem(Buffer, StringLen); { allocate the buffer } cellString := StringGrid1.Cells[X,Y]; for I := 1 to StringLen do Buffer[I - 1] := cellString[I]; FileWrite(FileHandle, Buffer^, StringLen); finally FreeMem(Buffer, StringLen); end; end; end; FileClose(FileHandle); end; end; procedure TForm1.FormCreate(Sender: TObject); begin with StringGrid1 do begin Cells[1,0] := 'Column 1'; Cells[2,0] := 'Column 2'; Cells[3,0] := 'Column 3'; Cells[4,0] := 'Column 4'; Cells[0,1] := 'Row 1'; Cells[1,1] := 'Object'; Cells[2,1] := 'Pascal'; Cells[3,1] := 'is'; Cells[4,1] := 'excellent'; Cells[0,2] := 'Row 2'; Cells[1,2] := 'Delphi'; Cells[2,2] := 'is'; Cells[4,2] := 'RAD'; end; end;
{ In addition to displaying the exception message, which happens by default, the following code shuts down the application when an exception is not caught and handled. AppException should be declared a method of TForm1. } procedure TForm1.FormCreate(Sender: TObject); begin Application.OnException := AppException; end; procedure TForm1.AppException(Sender: TObject; E: Exception); begin Application.ShowException(E); Application.Terminate; end; procedure TForm1.Button1Click(Sender: TObject); begin raise EPasswordInvalid.Create('Incorrect password entered'); end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|