except on E: EDBEngineError do begin for i := 0 to E.ErrorCount - 1 do begin if E.Errors[i].ErrorCode = $2601 then begin Application.MessageBox('已经存在这个编号,请选择其他编号!', '提示', 48 + mb_ok); end else Application.MessageBox(pChar('保存错误!错误信息为:' + E.Message), '提示', 48 + mb_ok); Exit; end;
procedure TMainForm.FormCreate(Sender: TObject); begin Application.OnException := ApplicationException; Application.Title := Caption; end;{ 记录每次raise 抛出的异常信息 } procedure TMainForm.ApplicationException(Sender: TObject; E: Exception); begin if E is EDBEngineError then ... else if E is EMyException then ... ... //记录E.Message信息 Application.ShowException(E); //相当于MessageBox(E.Message) end;type EMyException = class(Exception);buttonOnClick: raise EMyException.Create('Hello World');如果每个异常都用try except来保护,那太累人了,写Application.OnException事件,将全部包含起来,然后再在onException处理。
on E: EDBEngineError do
begin
for i := 0 to E.ErrorCount - 1 do
begin
if E.Errors[i].ErrorCode = $2601 then
begin
Application.MessageBox('已经存在这个编号,请选择其他编号!', '提示', 48 + mb_ok);
end
else
Application.MessageBox(pChar('保存错误!错误信息为:' + E.Message), '提示', 48 + mb_ok);
Exit;
end;
begin
Application.OnException := ApplicationException;
Application.Title := Caption;
end;{ 记录每次raise 抛出的异常信息 }
procedure TMainForm.ApplicationException(Sender: TObject; E: Exception);
begin
if E is EDBEngineError then
...
else if E is EMyException then
...
...
//记录E.Message信息
Application.ShowException(E); //相当于MessageBox(E.Message)
end;type
EMyException = class(Exception);buttonOnClick:
raise EMyException.Create('Hello World');如果每个异常都用try except来保护,那太累人了,写Application.OnException事件,将全部包含起来,然后再在onException处理。
try
...
except
showmessage(TObject(ExceptObject).name)
end;