Delphi 线程中怎么抛出异常
展开全部
如果是系统抛出的,那么,可以用
try
except
end;
来捕捉。
如果是自定义的异常,应该用raise来抛出。
异常类必须继承于Exception类。比如:
ESomeException = class(Exception)
下面是delphi 7 中 ForceDirectories函数抛出异常的方式
rceDirectories(Dir: string): Boolean;
var
E: EInOutError;
begin
Result := True;
if Dir = '' then
begin
E := EInOutError.CreateRes(@SCannotCreateDir);
E.ErrorCode := 3;
raise E; //这里,如果传入的目录路径为空,则抛出异常E,E就可以是你自己定义的异常类型
end;
Dir := ExcludeTrailingPathDelimiter(Dir);
{$IFDEF MSWINDOWS}
if (Length(Dir) < 3) or DirectoryExists(Dir)
or (ExtractFilePath(Dir) = Dir) then Exit; // avoid 'xyz:\' problem.
{$ENDIF}
{$IFDEF LINUX}
if (Dir = '') or DirectoryExists(Dir) then Exit;
{$ENDIF}
Result := ForceDirectories(ExtractFilePath(Dir)) and CreateDir(Dir);
end;
try
except
end;
来捕捉。
如果是自定义的异常,应该用raise来抛出。
异常类必须继承于Exception类。比如:
ESomeException = class(Exception)
下面是delphi 7 中 ForceDirectories函数抛出异常的方式
rceDirectories(Dir: string): Boolean;
var
E: EInOutError;
begin
Result := True;
if Dir = '' then
begin
E := EInOutError.CreateRes(@SCannotCreateDir);
E.ErrorCode := 3;
raise E; //这里,如果传入的目录路径为空,则抛出异常E,E就可以是你自己定义的异常类型
end;
Dir := ExcludeTrailingPathDelimiter(Dir);
{$IFDEF MSWINDOWS}
if (Length(Dir) < 3) or DirectoryExists(Dir)
or (ExtractFilePath(Dir) = Dir) then Exit; // avoid 'xyz:\' problem.
{$ENDIF}
{$IFDEF LINUX}
if (Dir = '') or DirectoryExists(Dir) then Exit;
{$ENDIF}
Result := ForceDirectories(ExtractFilePath(Dir)) and CreateDir(Dir);
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询