![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Корректное создание и вывод сообщений об исключительных ситуациях
Cosinus © (2004-08-17 11:32:00)Как правильно работать с исключениями? Точнее как правильно создавать и выводить сообщения о них? Вот как делаю я
procedure ErrorListCreate;
begin
ErorList:=TStringlist.Create;
ErrorList.Add('File open failure'); // index:=0
ErrorList.Add('File save failure');
......
ErrorList.Add('Create backup file failure');// index:=16
end;
procedure TMain.FormCreate(Sender: TObject);
begin
ErrorListCreate;
end;
procedure Error(ErrorIndex:word);
begin
ShowMessage(ErrorList.Strings[ErrorIndex]+
' with ErrorCode: '+IntToStr(GetLastError));
end;
function OpenBinFile(Filename:string):boolean;
begin
Result:=true;
try
Assignfile(BinFile,Filename);
Reset(BinFile);
...............
except
Result:=false;
end
end;
procedure ProcName;
begin
............
if not OpenBinFile then
begin
Error(0); // file open failure
.........
end;
............
end;
Не могли бы вы подсказать, корректно ли это и если нет, то как надо?
И еще вопрос. Хотелось бы сделать так, чтобы в сообщении об ошибке был мой текст + код ошибки(GetLastError) + интерпритация этой ошибки Виндой. Т.е. что то вроде 'File open failure with ErrorCode: 5 (Access denied)'. Где храняться соответствия между кодами ошибки и их строковыми представлениями?
Cosinus (2004-08-17 12:30:00) [1]>>Семен Сорокин ©
Да, это именно то, что было нужно, спасибо.
>> Skyle ©
О SysErrorMessage(GetLastError) не знал... Спасибо.
Skyle (2004-08-17 11:57:00) [2]
> интерпритация этой ошибки Виндой
ShowMessage(SysErrorMessage(GetLastError));?
Семен Сорокин (2004-08-17 11:52:00) [3]
try
// генерация исключения
except
on E: Exception do {либо специфический (зависит от блока в try), например EBDEEngineError, EMyException etc}
MessageDlg('Моё сообщение' + #13#10 + E.Message {сформированное сообщение}, ...)
end
загляни в Help там довольно неплохо расписан механизм генерации исключений.