एक try
ब्लॉक में एक अपवाद होती है, तो कैसे निष्पादन catch
ब्लॉक करने के लिए स्थानांतरित कर रहा है? यह सी #/जावा/सी ++ प्रश्न नहीं है, मैं बस सोच रहा हूं कि यह आंतरिक रूप से कैसे काम करता है।लागू/प्रयास ब्लॉक कैसे लागू किए जाते हैं?
उत्तर
यह सी #/जावा/सी ++ प्रश्न नहीं है। यह आंतरिक रूप से कैसे काम करता है, लाइन कैच स्टेटमेंट कैसे जाना जानता है।
यह कैसे काम करता है आंतरिक रूप से (क्योंकि इसे दूसरे तरीके से लागू किया जाएगा) इस काफी एक सी #/जावा/सी ++ सवाल बना देता है।
जावा में, एक कोशिश ब्लॉक एक विशेष तालिका में ही स्थापित (वर्ग फ़ाइल में)। जब JVM अपवाद फेंकता है, तो यह उस तालिका को देखता है कि अगली पकड़ या अंत में जाने के लिए ब्लॉक कहां है।
जब कोई अपवाद होता है तो एक विशेष निर्देश निष्पादित होता है (आमतौर पर को बाधित करता है)। इससे एक सामान्य त्रुटि हैंडलर निष्पादित होता है जो कि नवीनतम स्थापित अपवाद हैंडलर को स्थापित करता है। उस हैंडलर को तब निष्पादित किया जाता है।
यह कुछ हद तक इस तरह सभी Langues में काम करना चाहिए:
if (error_occured xy while doing things in try){
call_catch_part(error xy)
}
यह मूल रूप से भाषा की बुनियादी बातों को पार्स कर रहा है। भले ही कोई अपवाद दर असल निपटने है आप Here
एक अंतर है कि जावा या सी # जैसे वर्चुअल मशीन पर निष्पादित बाइट-कोड का उपयोग करके सी ++ और भाषाओं जैसे मूल रूप से संकलित भाषाओं के बीच तकनीकी रूप से कैसे अपवाद किए जाते हैं।
सी ++ compilers आमतौर पर कोड है कि सूचना अपवाद कार्यावधि में से निपटने के लिए आवश्यक प्रोटोकॉल उत्पन्न करते हैं। एक समर्पित डेटा संरचना का उपयोग प्रयास ब्लॉक/संबंधित अपवाद हैंडलर के प्रवेश/निकास को याद रखने के लिए किया जाता है। जब कोई अपवाद होता है, तो एक बाधा उत्पन्न होती है और नियंत्रण ओएस को पास किया जाता है जो बदले में कॉल स्टैक का निरीक्षण करता है और यह निर्धारित करता है कि कौन से अपवाद हैंडलर को कॉल करना है।
अधिक जानकारी बहुत अच्छी तरह से विशाल कोचर द्वारा निम्न आलेख में वर्णन किया गया है:
जावा में या .NET जानकारी से निपटने के अपवाद को बनाए रखने की भूमि के ऊपर के लिए कोई जरूरत नहीं है क्योंकि रनटाइम संबंधित अपवाद हैंडलर को खोजने के लिए बाइट कोड का निरीक्षण करने में सक्षम होगा। नतीजतन, केवल अपवाद जो वास्तव में फेंक दिए जाते हैं, वे उपरिवर्तित होते हैं।
- 1. सी # जेनेरिक कैसे लागू किए जाते हैं?
- 2. कमजोर संदर्भ कैसे लागू किए जाते हैं?
- 3. सीपीथन में जनरेटर और कोरआउट कैसे लागू किए जाते हैं?
- 4. हास्केल में लाइब्रेरी फ़ंक्शन कैसे लागू किए जाते हैं
- 5. सदस्य प्रकार कैसे कार्यान्वित किए जाते हैं?
- 6. म्यूटेक्स कैसे कार्यान्वित किए जाते हैं?
- 7. डोम पार्सर्स कैसे कार्यान्वित किए जाते हैं?
- 8. लॉगरिदम प्रोग्राम कैसे किए जाते हैं?
- 9. पीडीएफ आकार कैसे निर्दिष्ट किए जाते हैं?
- 10. आईओएस गेम्स कैसे स्थापित किए जाते हैं?
- 11. जावा थ्रेड कैसे निर्धारित किए जाते हैं?
- 12. एनआईओ प्रत्यक्ष बफर कब और कैसे मुक्त किए जाते हैं?
- 13. एचटीएमएल चेकबॉक्स तत्व केवल तभी सबमिट किए जाते हैं जब वे चेक किए जाते हैं?
- 14. जीयूआई कैसे खींचे जाते हैं?
- 15. डीबगर ब्रेकपॉइंट्स कुशलतापूर्वक कार्यान्वित कैसे किए जाते हैं?
- 16. जावा एनोटेशन कब निष्पादित किए जाते हैं?
- 17. स्टेटलेस ईजेबी क्यों पूल किए जाते हैं?
- 18. व्यूपेजर में वेब व्यू लोड नहीं किए जाते/प्रस्तुत किए जाते हैं जब तक पेज
- 19. आरडीबी में नियमित और समग्र इंडेक्स कैसे लागू किए जाते हैं?
- 20. साझा किए गए ताले लॉक कब जारी किए जाते हैं?
- 21. सीरियल जनरेटर/दरार कैसे विकसित किए जाते हैं?
- 22. एंड्रॉइड टच इवेंट कैसे वितरित किए जाते हैं?
- 23. सिल्वरलाइट अनुप्रयोग - वे कैसे अपडेट किए जाते हैं?
- 24. पर्ल के मूल पुस्तकालय कैसे प्रबंधित किए जाते हैं?
- 25. MPI_Scatter और MPI_Gather सी से कैसे उपयोग किए जाते हैं?
- 26. Plpython में आयात विवरण कैसे प्रबंधित किए जाते हैं?
- 27. कालबाह्य कोडिनेटर सत्र कैसे साफ किए जाते हैं?
- 28. नामित पैरामीटर बैच फ़ाइल में कैसे पास किए जाते हैं?
- 29. मल्टीकोर + हाइपरथ्रेडिंग - धागे कैसे वितरित किए जाते हैं?
- 30. स्मृति में फ़्लोटिंग पॉइंट नंबर कैसे संग्रहीत किए जाते हैं?
वह यह है कि सभी जानते हैं .. बच्चे हैंडलर से सिस्टम सॉफ्टवेयर/विधानसभा/पहले .. मैं उम्मीद कर रहा हूँ जवाब निष्पादित।नेट फ्रेमवर्क – selvaraj
क्या आप बता सकते हैं कि विशेष निर्देश जो भी आपको लगता है – selvaraj
@saj: देशी सी ++ प्रोग्राम में एक विशेष प्रोसेसर निर्देश 'int' का उपयोग किया जाता है जिसे प्रोग्राम निष्पादित और रोक दिया जाता है और फिर नियंत्रण स्वचालित रूप से ऑपरेटिंग सिस्टम इंटरप्ट हैंडलर में स्थानांतरित हो जाता है बदले में यह देखता है कि यह एक सी ++ अपवाद है और सी ++ अपवाद हैंडलर पर नियंत्रण स्थानांतरित करता है। – sharptooth