Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Корректное создание и вывод сообщений об исключительных ситуациях   Найти похожие ветки 

 
Cosinus ©   (2004-08-17 11:32) [0]

Как правильно работать с исключениями? Точнее как правильно создавать и выводить сообщения о них? Вот как делаю я

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)". Где храняться соответствия между кодами ошибки и их строковыми представлениями?


 
Семен Сорокин ©   (2004-08-17 11:52) [1]

try
 // генерация исключения
except
 on E: Exception do {либо специфический (зависит от блока в try), например EBDEEngineError, EMyException etc}
   MessageDlg("Моё сообщение" + #13#10 + E.Message {сформированное сообщение}, ...)
end


загляни в Help там довольно неплохо расписан механизм генерации исключений.


 
Skyle ©   (2004-08-17 11:57) [2]


> интерпритация этой ошибки Виндой

ShowMessage(SysErrorMessage(GetLastError));?


 
Cosinus ©   (2004-08-17 12:30) [3]

>>Семен Сорокин ©  
Да, это именно то, что было нужно, спасибо.
>> Skyle ©
О SysErrorMessage(GetLastError) не знал... Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
14-1092428075
Паскальные надписи
2004-08-14 00:14
2004.09.05
Приступ болезни "ОПТИМИЗАЦИЯ" - МОДУЛИ


4-1090302822
acidman
2004-07-20 09:53
2004.09.05
LPT под win2k/XP/NT


6-1088744933
Iraizor
2004-07-02 09:08
2004.09.05
Небольшой вопрос про SMTP


14-1092742556
Vovchik_A
2004-08-17 15:35
2004.09.05
Предложение для киевлян


9-1084807193
Pirate
2004-05-17 19:19
2004.09.05
3D Движки