delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف استعمل كود الاستتناء (indy exceptions by code)؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

كما نعلم ان لكل خطئ كود او رقم يعرفه.


[COLOR="Red"]السؤال : كيف يمكنني الاستفادة من هدا الكود ؟[/COLOR]

لتوضيح اكثر :

PHP كود :
Try
   
Except
  on E
: EIdException do
     
begin 
       ErrorCode
:=E.ErrorCode;
       case 
ErrorCode fo
         0001
:do something
         0002
:do something
         1060
:do something
         2300
:do something
       end
;
     
end;
End; 
[COLOR="Red"]كيف استخرج كود الخطئ لي اتعامل معه؟[/COLOR]
للعلم انا استعمل مكون indy .
وجدت طريقة ولكن غير مجدية :

PHP كود :
Try
 
connect;  
Except
  on E
: EIdException do
     
begin
       
if E.ClassName = 'EIdSocketError' then
          begin
            
// do code 1
          
end else 
          
begin
            
if E.ClassName = 'EIdConnectTimeout' then
               begin
                  
// do code 2
               
end else
               
begin
                 
if E.ClassName = 'Any error' then
                    begin
                       
// do code 3
                    
end else
                    
begin
                      
..........
                    
end;
               
end;
          
end;
     
     
end;
end; 

لكن لكل خطئ كود خاص به (كيف استخرج دلك الكود واستعمله بدل إستعمال E.ClassName ) ألا يوجد طريقة لستخراجة ؟
وعليكم السلام ورحمة الله وبركاته
بعض الأنماط توفر رقم الخطأ (وغالبا رسالة خطأ افتراضية)، مثال BDE
كود :
http://www.delphifaq.com/faq/delphi/database/f1.shtml
حيث يمكنك تخصيصها لأغراض Localization أو غيرها، عند حدث معين (OnError) أو غيره...
البعض الآخر يتكفل بالـ Localization بنفسه، ويعرض رسالة خطأ معبرة ومطابقة لإعدادات النظام
الأمر الذي لا يناسب المبرمج/المستخدم في حالات كثيرة...
كحل بديل استخدام حيز محمي Try/Except وفحص رسالة الخطأ
كود :
Try // ... Except if AnsiContainsText(e.Message, 'PRIMARY KEY') then begin end; End;
أو فحص صنف الخطأ كما أشرت:
PHP كود :
Try
  
Except
    on EDivByZero 
do begin

    end
;
//    Other exceptions...
    
on Exception do begin

    end
;
  
End; 
بالتوفيق.