Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
1-1093116430
kraw
2004-08-21 23:27
2004.09.05
TForm и как с ней бороться


1-1092823928
EvgeniyR
2004-08-18 14:12
2004.09.05
TreeView


3-1092226739
fedor
2004-08-11 16:18
2004.09.05
Как в FastReport 3 отобразить содержимое StringGrid?


4-1090676711
юзверь
2004-07-24 17:45
2004.09.05
ToolbarWindow32


1-1092846426
dimon1979
2004-08-18 20:27
2004.09.05
Гиперссылка




   Наверх