मैं फास्टएमएम 4.9 2 और जेडीआई जेवीसीएल 3.0 के साथ विंडोज एक्सपी पर डेल्फी प्रो 6 का उपयोग कर रहा हूं। नीचे दिए गए कोड को देखते हुए, मुझे निम्न समस्या आ रही है: केवल पहला अपवाद हैंडलिंग ब्लॉक ई का वैध उदाहरण प्राप्त करता है। अन्य ब्लॉक अपवाद के वर्ग के साथ ठीक से मेल खाते हैं, लेकिन ई असाइन किया गया है (शून्य)।कई अपवाद हैंडलिंग ब्लॉक के साथ डेल्फी अपवाद हैंडलिंग समस्या
उदाहरण के लिए, जब मैं ई 1 मैचों और ई के लिए ब्लॉक बढ़ाता हूं तो अपवाद हैंडलिंग ब्लॉक का वर्तमान क्रम दिया गया है और ई वैध ऑब्जेक्ट उदाहरण है। हालांकि, अगर मैं ई 2 बढ़ाने की कोशिश करता हूं, तो वह ब्लॉक मेल खाता है, लेकिन ई असाइन नहीं किया गया है (शून्य)। अगर मैं ऑर्डरिंग के शीर्ष पर ई 2 कैचिंग ब्लॉक ले जाता हूं और ई 1 बढ़ाता हूं, तो जब ई 1 ब्लॉक ई से मेल खाता है तो अब असाइन नहीं किया गया है। इस नए ऑर्डरिंग के साथ यदि मैं ई 2 बढ़ाता हूं, तो ई ठीक से असाइन किया जाता है जब ऐसा नहीं होता था जब ई 2 ब्लॉक ऑर्डरिंग में पहला ब्लॉक नहीं था। नोट मैंने इस मामले को एक नंगे हड्डी परियोजना के साथ करने की कोशिश की जिसमें केवल एक डेल्फी फॉर्म शामिल था।
क्या मैं वास्तव में कुछ मूर्खतापूर्ण कर रहा हूं या वास्तव में कुछ गलत है?
धन्यवाद, रॉबर्ट
type
E1 = class(EAbort)
end;
E2 = class(EAbort)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
raise E1.Create('hello');
except
On E: E1 do
begin
OutputDebugString('E1');
end;
On E: E2 do
begin
OutputDebugString('E2');
end;
On E: Exception do
begin
OutputDebugString('E(all)');
end;
end; // try()
end;
मैं डेल्फी 2009 में किसी भी विसंगति का निरीक्षण करने का उपयोग कर पा रहा हूं यह कोड –
मुझे लगता है कि यह समस्या केवल तब होती है क्योंकि आप वास्तव में ब्लॉक के अंदर ई का उपयोग नहीं करते हैं। कंपाइलर अनुकूलन के कारण यह चर स्थिर नहीं होगा जब यह उपयोग में नहीं है। यदि आप आउटपुटडिबगस्ट्रिंग ('E1' + E.Message) जैसे कुछ में करेंगे तो इसे काम करना चाहिए। –