अपवाद ऑपरेटिंग सिस्टम के परिप्रेक्ष्य से कैसे काम करते हैं?अपवाद फेंकने के लिए किसकी जिम्मेदारी है ?; ओएस या प्रक्रिया?
सी ++ से आ रहा है, मैं प्रोग्रामर के परिप्रेक्ष्य से अपवादों को समझ सकता हूं।
जब कोई अपवाद फेंक दिया जाता है, तो ढेर खोलने लगते हैं, और प्रत्येक सक्रियण रिकॉर्ड में अपवाद को पकड़ने और संभालने का अवसर होता है।
लेकिन पहली जिम्मेदारी को अपवाद फेंकने की किसकी ज़िम्मेदारी थी?
- यह ऑपरेटिंग सिस्टम है कि इस प्रक्रिया करने के लिए एक ट्रिगर भेजता है यह दर्ज करने के लिए यह कह रही है "अपवाद हैंडलिंग राज्य?"
- प्रक्रिया है जो अपने स्वयं के प्रोग्राम स्पेस में अपवादों को संभालने और संभालने की प्रक्रिया है, ओएस के लिए अप्रतिबंधित है?
यहां दो दुर्घटनाग्रस्त कार्यक्रम हैं जो मेरी अनिश्चितता को दर्शाते हैं।
int main(){
int i = 1/0; //did the OS tell the process to end?
return 0;
}
#include <exception>
int main(){
throw 11; //did the process tell the OS it needs to end?
return 0;
}
त्वरित उत्तर: सी ++ अपवाद पूरी तरह से संचालित प्रक्रिया है। लेकिन मेरे पास जवाब पर आगे जाने के लिए पर्याप्त ज्ञान नहीं है कि वास्तव में अपवाद कैसे काम करते हैं। संपादित करें: आपके पहले मामले में प्रक्रिया को एक सिग्नल प्राप्त होता है जिसे C++ अपवाद –
में परिवर्तित किया जा सकता है आपके उदाहरणों में से कोई भी क्रैश नहीं होता –
@ BЈовић मुझे लगता है कि क्रैश द्वारा, एक्सप्लोइट का अर्थ गैर-0 त्रुटि कोड से बाहर निकलना है। –