![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Exception. Изменение сообщения ошибки.
_RusLAN © (2006-04-14 11:25:00)Есть у меня процедура которая внутри себя исползует много других процедур и функций.
Если в какой-то внутренней функции возникла исключительная ситуация то я хочу поменять текст исключительной ситуации на описание места где это произошло и параметры + сам текст ошибки.
На даный момент я просто в каждой функции try except отлавливаю ошибки, создаю текст сообщения и через raise Exception.Create создаю новое исключение.
Правильно ли это, или можно как-то налету изменить текст ошибки.
_RusLAN (2006-04-14 15:38:00) [21]Сергей М. © (14.04.06 14:44) [5]
jack128 © (14.04.06 14:34) [4]
Насколько я понимаю, это почти аналогично моему варинту, только в ваших сохраняеться класс исключительной ситуации(хотя мне это не важно) + меньше кода писать.
try
. . .
except
on E:Exception do
begin
raise EDatabaseError.CreateFmt('Ошибка записи GID в локальную БД. %s%s',
[ #10#13, E.Message]);
end;
end;
Так что я переделывать не буду, но в дальнейшем буду пользоваться вашим вариантом.
Спасибо.
Сергей М. (2006-04-14 14:44:00) [22]
> jack128 © (14.04.06 14:34) [4]
Держи-ка "простое" :
procedure TTestForm.Button2Click(Sender: TObject);
var
i: Integer;
begin
i:= 0;
try
i := i div i;
except
on E: Exception do
begin
E.Message := 'New Exception message';
raise;
end;
end;
end;
и призадумайся ..
jack128 (2006-04-14 14:34:00) [23]Сергей М. © (14.04.06 12:04) [2]
зачем так сложно то делать, есть же специальные языковые конструкции:
procedure TTestForm.Button2Click(Sender: TObject);
begin
try
raise Exception.Create('Old Exception message');
except
on E: Exception do
begin
E.Message := 'New Exception message';
raise;
end;
end;
end;
_RusLAN (2006-04-14 13:07:00) [24]Сергей М. © (14.04.06 12:04) [2]
Спасибо.
Сергей М. (2006-04-14 12:04:00) [25]procedure TTestForm.Button2Click(Sender: TObject);
var
i: Integer;
e: exception;
begin
i := 0;
try
i:= i div i;
except
e:= AcquireExceptionObject;
try
e.message := 'Ìîé òåñêò ñîîáùåíèÿ îá èñêëþ÷åíèè';
raise e;
finally
ReleaseExceptionObject;
end;
end;
end;
Kolan (2006-04-14 11:53:00) [26]Ну если не лень... Для таких дел лог подходит... Да и не лучьше ли писать без ошибок?