Exception Handling in C++ Notes | try, throw, catch & Exception Handling Mechanism | Basic Computer Engineering | RGPV BTech First Year
Exception Handling in C++ Notes | try, throw, catch & Exception Handling Mechanism | Basic Computer Engineering | RGPV BTech First Year
Exception Handling in C++
Exception Handling C++ Object Oriented Programming (OOP) का एक महत्वपूर्ण Feature है, जिसका उपयोग Program के Execution के दौरान उत्पन्न होने वाली Runtime Errors को Handle करने के लिए किया जाता है। Exception Handling की सहायता से Program अचानक Terminate होने के बजाय Error को Handle करके अपना Execution जारी रख सकता है।
C++ में Exception Handling मुख्य रूप से try, throw तथा catch Keywords पर आधारित होती है। try Block में वह Code लिखा जाता है जिसमें Exception आने की संभावना होती है। यदि कोई Error उत्पन्न होती है, तो throw Statement द्वारा Exception Generate किया जाता है तथा संबंधित catch Block उस Exception को Handle करता है।
RGPV B.Tech First Year के Basic Computer Engineering Subject में Exception Handling in C++ अत्यंत महत्वपूर्ण Topic है। University Examination, Practical तथा Viva में try, throw, catch, Multiple catch Blocks, Nested try-catch तथा User Defined Exceptions से संबंधित प्रश्न नियमित रूप से पूछे जाते हैं।
↓
Exception Occurs
↓
throw Statement
↓
catch Block
↓
Program Continues
Introduction to Exception Handling
सामान्य Program Execution के दौरान कई बार ऐसी परिस्थितियाँ उत्पन्न हो जाती हैं जिनके कारण Program में Runtime Error आ सकती है। उदाहरण के लिए Division by Zero, Invalid Input, File Not Found अथवा Memory Allocation Failure जैसी स्थितियाँ Program को Crash कर सकती हैं। इन समस्याओं को सुरक्षित रूप से Handle करने के लिए Exception Handling का उपयोग किया जाता है।
Exception Handling Program को अधिक Reliable, Secure तथा User Friendly बनाती है क्योंकि Error आने पर भी Program को नियंत्रित (Controlled) तरीके से Execute किया जा सकता है।
What is Exception?
Exception वह असामान्य स्थिति (Abnormal Condition) है जो Program के सामान्य Execution Flow को बाधित करती है। जब Runtime पर कोई Unexpected Error उत्पन्न होती है, तब उसे Exception कहा जाता है।
| Exception | Description |
|---|---|
| Division by Zero | किसी संख्या को 0 से Divide करने का प्रयास। |
| File Error | आवश्यक File उपलब्ध न होना। |
| Memory Error | Memory Allocation में समस्या आना। |
| Invalid Input | गलत अथवा Unexpected Input प्राप्त होना। |
What is Exception Handling?
Exception Handling वह प्रक्रिया है जिसके द्वारा Program में उत्पन्न Exceptions को Detect तथा Handle किया जाता है ताकि Program अचानक बंद (Terminate) न हो और उचित Error Message प्रदर्शित करके सुरक्षित रूप से आगे Execute हो सके।
C++ में Exception Handling के लिए तीन मुख्य Keywords उपयोग किए जाते हैं:
- try — वह Block जिसमें Exception आने की संभावना होती है।
- throw — Exception Generate करने के लिए उपयोग किया जाता है।
- catch — Generated Exception को Handle करने के लिए उपयोग किया जाता है।
Need of Exception Handling
आधुनिक Software Applications में Runtime Errors को सुरक्षित रूप से Handle करना अत्यंत आवश्यक होता है। Exception Handling Program को अधिक Robust तथा Reliable बनाती है।
- Runtime Errors को सुरक्षित रूप से Handle करने के लिए।
- Program Crash होने से बचाने के लिए।
- Meaningful Error Messages प्रदर्शित करने के लिए।
- Program Execution को नियंत्रित रखने के लिए।
- Resource Leakage से बचने के लिए।
- Large Scale Enterprise Applications की Reliability बढ़ाने के लिए।
- Professional Software Development Standards को लागू करने के लिए।
Advantages of Exception Handling
| Advantage | Description |
|---|---|
| Improved Reliability | Program अचानक बंद नहीं होता। |
| Error Separation | Normal Code तथा Error Handling Code अलग रहते हैं। |
| Easy Maintenance | Error Handling को Manage करना आसान हो जाता है। |
| Resource Safety | Resources को सुरक्षित रूप से Release किया जा सकता है। |
| Professional Software Design | Robust एवं User Friendly Applications विकसित की जा सकती हैं। |
Exception Handling Mechanism
Exception Handling Mechanism वह प्रक्रिया है जिसके द्वारा C++ Program Runtime पर उत्पन्न होने वाली Exception को Detect, Throw तथा Handle करता है। जब Program में कोई असामान्य स्थिति उत्पन्न होती है, तब Control सामान्य Execution Flow छोड़कर संबंधित catch Block में पहुँच जाता है।
↓
try Block Executes
↓
Exception Occurs
↓
throw Statement
↓
Matching catch Block
↓
Exception Handled
↓
Program Continues
try Block
try Block वह Block होता है जिसमें ऐसा Code लिखा जाता है जहाँ Exception आने की संभावना होती है। यदि try Block के अंदर कोई Exception उत्पन्न होती है, तो Program उसी समय संबंधित catch Block में Control Transfer कर देता है।
यदि try Block के अंदर कोई Exception उत्पन्न नहीं होती, तो उससे संबंधित catch Block Execute नहीं होता।
throw Statement
throw Keyword का उपयोग Exception Generate करने के लिए किया जाता है। जब Program किसी Error Condition को Detect करता है, तब throw Statement द्वारा Exception को संबंधित catch Block तक भेजा जाता है।
यहाँ value Integer, Character, Floating Point Number, String अथवा User Defined Object भी हो सकता है।
catch Block
catch Block Exception को Receive तथा Handle करने का कार्य करता है। प्रत्येक catch Block किसी विशेष Data Type अथवा Object की Exception को Handle करता है।
यदि throw द्वारा Integer Value भेजी जाती है, तो Integer Parameter वाला catch Block Execute होगा।
Syntax of Exception Handling
यह C++ Exception Handling का सामान्य Syntax है जिसमें try, throw तथा catch तीनों का उपयोग किया गया है।
Simple Exception Handling Example
Output
ऊपर दिए गए उदाहरण में Age Negative होने पर throw age; Statement Execute होता है तथा Control सीधे Integer प्रकार के catch Block में पहुँच जाता है, जहाँ Exception Handle की जाती है।
Important Points
- try Block में Risky Code लिखा जाता है।
- throw Statement Exception Generate करता है।
- catch Block Exception को Handle करता है।
- Matching Data Type वाला catch Block ही Execute होता है।
- Exception आने पर Program का Control सीधे catch Block में Transfer हो जाता है।
- Exception Handle होने के बाद Program सामान्य रूप से आगे Execute हो सकता है।
- RGPV Practical एवं Viva में try, throw तथा catch आधारित Programs अत्यंत महत्वपूर्ण हैं।
Flow of Exception Handling
C++ में Exception Handling एक निश्चित क्रम (Flow) में कार्य करती है। सबसे पहले Program try Block को Execute करता है। यदि कोई Exception उत्पन्न नहीं होती, तो Program सामान्य रूप से आगे बढ़ता है। लेकिन यदि Exception उत्पन्न होती है, तो throw Statement द्वारा उसे Generate किया जाता है और Control तुरंत संबंधित catch Block में Transfer हो जाता है।
↓
Execute try Block
↓
Exception?
↓
Yes
↓
throw Statement
↓
Matching catch Block
↓
Handle Exception
↓
Continue Program
Multiple catch Blocks
यदि Program में विभिन्न प्रकार (Different Types) की Exceptions आने की संभावना हो, तो एक ही try Block के साथ अनेक catch Blocks लिखे जा सकते हैं। Runtime पर केवल वही catch Block Execute होगा जिसका Data Type, throw द्वारा भेजी गई Exception से Match करता है।
Output
ऊपर दिए गए उदाहरण में Integer Value Throw की गई है, इसलिए केवल Integer वाला catch Block Execute होगा।
Nested try-catch
जब किसी try Block के अंदर दूसरा try-catch Block लिखा जाता है, तो उसे Nested try-catch कहा जाता है। इसका उपयोग Complex Programs में विभिन्न स्तरों (Multiple Levels) पर Exception Handling करने के लिए किया जाता है।
ऊपर दिए गए उदाहरण में Exception पहले Inner catch द्वारा Handle की जाती है। यदि Inner Block Exception Handle नहीं कर पाता, तब Outer catch उसे Handle कर सकता है।
Rethrowing an Exception
कई बार किसी Exception को पहले Handle करने के बाद उसे पुनः (Again) दूसरे catch Block तक भेजने की आवश्यकता होती है। इस प्रक्रिया को Rethrowing an Exception कहा जाता है।
यहाँ throw; Statement बिना किसी Value के उसी Exception को पुनः Throw करता है ताकि उसे Higher Level पर Handle किया जा सके।
Standard Exceptions
C++ Standard Library में कई पहले से Defined Exceptions उपलब्ध होती हैं जिन्हें Standard Exceptions कहा जाता है। ये <exception> Header File में उपलब्ध होती हैं।
| Exception | Purpose |
|---|---|
| bad_alloc | Memory Allocation Failure को दर्शाता है। |
| bad_cast | Invalid Type Casting की स्थिति में उपयोग होता है। |
| bad_exception | Unexpected Exception Handling के लिए उपयोग होता है। |
| logic_error | Program Logic से संबंधित Errors को दर्शाता है। |
| runtime_error | Runtime के दौरान उत्पन्न Errors को दर्शाता है। |
Important Points
- Multiple catch Blocks द्वारा विभिन्न प्रकार की Exceptions Handle की जा सकती हैं।
- Nested try-catch Complex Programs में उपयोग किया जाता है।
- throw; द्वारा किसी Exception को पुनः Throw किया जा सकता है।
- Standard Library में अनेक Built-in Exceptions उपलब्ध हैं।
- Matching Data Type वाला catch Block ही Execute होता है।
- Exception आने पर Program का सामान्य Flow बदल जाता है और Control सीधे संबंधित catch Block में चला जाता है।
- RGPV Practical एवं Viva में Multiple Catch Blocks, Nested try-catch तथा Standard Exceptions अत्यंत महत्वपूर्ण Topics हैं।
User Defined Exceptions
C++ में Programmer अपनी आवश्यकता के अनुसार स्वयं भी Exception बना सकता है, जिसे User Defined Exception कहा जाता है। इसका उपयोग विशेष Business Rules अथवा Application Logic से संबंधित Errors को Handle करने के लिए किया जाता है।
उदाहरण के लिए Banking Software में Minimum Balance से कम राशि होने पर, Hospital Management System में Invalid Patient ID होने पर अथवा College Management System में Invalid Marks होने पर User Defined Exception का उपयोग किया जा सकता है।
Output
ऊपर दिए गए उदाहरण में Programmer ने स्वयं String Message को Exception के रूप में Throw किया है, इसलिए इसे User Defined Exception कहा जाता है।
Exception Handling vs Error Handling
यद्यपि दोनों का उद्देश्य Program में आने वाली समस्याओं को Handle करना है, लेकिन Exception Handling तथा Error Handling में महत्वपूर्ण अंतर होता है।
| Exception Handling | Traditional Error Handling |
|---|---|
| try, throw तथा catch का उपयोग करता है। | if-else अथवा Error Codes का उपयोग करता है। |
| Runtime Errors को प्रभावी रूप से Handle करता है। | Manual Error Checking करनी पड़ती है। |
| Program अधिक Clean तथा Readable रहता है। | Error Checking Code Program में फैल जाता है। |
| Maintain करना आसान होता है। | Maintenance अपेक्षाकृत कठिन होती है। |
| Large Applications के लिए उपयुक्त। | छोटे Programs के लिए उपयुक्त। |
Advantages of Exception Handling
- Program अचानक Terminate नहीं होता।
- Runtime Errors को व्यवस्थित (Organized) तरीके से Handle किया जा सकता है।
- Normal Program Logic तथा Error Handling Logic अलग रहते हैं।
- Program अधिक Reliable एवं Secure बनता है।
- Code की Readability तथा Maintainability बढ़ती है।
- Professional Software Development के लिए उपयुक्त है।
- Large Scale Enterprise Applications में Error Management आसान हो जाता है।
Limitations of Exception Handling
- Improper Exception Handling से Program Complexity बढ़ सकती है।
- बहुत अधिक Exceptions Program की Readability कम कर सकती हैं।
- Runtime पर Exception Handling के कारण थोड़ा अतिरिक्त Processing Overhead होता है।
- Beginners के लिए Multiple Catch तथा Nested try-catch समझना कठिन हो सकता है।
- सभी प्रकार की Errors Exception द्वारा Handle नहीं की जा सकतीं।
- गलत Exception Design Debugging को कठिन बना सकती है।
Applications of Exception Handling
| Application | Purpose |
|---|---|
| Banking Software | Invalid Transactions तथा Insufficient Balance को Handle करना। |
| Hospital Management System | Invalid Patient Records एवं Database Errors को Handle करना। |
| File Management System | File Not Found एवं File Access Errors Handle करना। |
| Database Applications | Connection तथा Query Execution Errors को Handle करना। |
| Web Applications | Invalid User Requests तथा Server Exceptions को Manage करना। |
| Enterprise Software | Business Rules तथा Runtime Failures को सुरक्षित रूप से Handle करना। |
Best Practices
- केवल Exceptional Situations के लिए Exception Handling का उपयोग करें।
- Meaningful Error Messages प्रदर्शित करें।
- Specific Exception Types को Handle करें।
- अनावश्यक Nested try-catch Blocks से बचें।
- Resources को Proper तरीके से Release करें।
- Custom Exceptions का उपयोग Business Logic के अनुसार करें।
- Exception Handling Code को सरल एवं Maintainable रखें।
Applications of Exception Handling
Exception Handling का उपयोग लगभग सभी आधुनिक Software Applications में किया जाता है। यह Runtime Errors को नियंत्रित (Control) करने, Program Crash से बचाने तथा सुरक्षित एवं Reliable Software विकसित करने में महत्वपूर्ण भूमिका निभाता है।
| Application | Purpose |
|---|---|
| Banking Software | Insufficient Balance, Invalid Transaction तथा Account Errors को Handle करना। |
| Hospital Management System | Invalid Patient ID, Medical Records तथा Database Errors को Manage करना। |
| File Management System | File Not Found, Read तथा Write Errors को Handle करना। |
| Database Applications | Connection Failure, Query Errors तथा Transaction Failures को Handle करना। |
| Web Applications | Invalid Requests, Authentication Errors तथा Server Exceptions को Manage करना। |
| E-Commerce Applications | Payment Failure, Order Processing तथा Inventory Errors को Handle करना। |
| Enterprise ERP Systems | Business Rules तथा Runtime Exceptions को सुरक्षित रूप से Handle करना। |
Advantages of Exception Handling
- Program अचानक Terminate होने से बच जाता है।
- Runtime Errors को व्यवस्थित तरीके से Handle किया जा सकता है।
- Normal Logic तथा Error Handling Code अलग-अलग रहता है।
- Software अधिक Reliable एवं Robust बनता है।
- Debugging तथा Maintenance आसान हो जाती है।
- User को Meaningful Error Messages प्राप्त होते हैं।
- Professional Enterprise Applications के लिए अत्यंत उपयोगी है।
Limitations of Exception Handling
- Runtime पर अतिरिक्त Processing Overhead हो सकता है।
- अत्यधिक Exception Handling Program की Complexity बढ़ा सकती है।
- Improper Exception Design से Program समझना कठिन हो सकता है।
- Nested try-catch Blocks Debugging को कठिन बना सकते हैं।
- सभी प्रकार की Programming Errors Exception द्वारा Handle नहीं की जा सकतीं।
- Improper Exception Handling से Resources Release न होने की समस्या उत्पन्न हो सकती है।
- Beginners के लिए Exception Propagation समझना चुनौतीपूर्ण हो सकता है।
Best Practices
- केवल Exceptional Situations के लिए ही Exceptions का उपयोग करें।
- Specific Exceptions को Specific catch Blocks में Handle करें।
- Meaningful तथा User Friendly Error Messages प्रदर्शित करें।
- Resources को Exception आने पर भी Proper तरीके से Release करें।
- Nested try-catch का उपयोग केवल आवश्यकता होने पर करें।
- Custom Exceptions का उपयोग Business Logic के अनुसार करें।
- Exception Handling Code को सरल, Readable तथा Maintainable रखें।
Real Life Example
मान लीजिए किसी ATM Banking System में Customer ₹10,000 निकालना चाहता है, लेकिन उसके Account में केवल ₹3,000 उपलब्ध हैं। ऐसी स्थिति में Program सामान्य Transaction को रोककर Insufficient Balance Exception Generate करता है। यह Exception catch Block द्वारा Handle की जाती है और User को उचित संदेश प्रदर्शित किया जाता है। Program Crash नहीं होता तथा Customer अन्य Banking Operations जारी रख सकता है। यही Exception Handling का वास्तविक उपयोग है।
Working of Exception Handling
↓
Execute try Block
↓
Runtime Error Occurs
↓
throw Statement Executes
↓
Matching catch Block Found
↓
Exception Handled
↓
Program Continues Normally
Summary
Exception Handling C++ Object Oriented Programming का एक महत्वपूर्ण Feature है जिसका उपयोग Program Execution के दौरान उत्पन्न होने वाली Runtime Errors को सुरक्षित रूप से Handle करने के लिए किया जाता है। C++ में Exception Handling मुख्य रूप से try, throw तथा catch Keywords पर आधारित होती है। try Block में Risky Code लिखा जाता है, throw Statement Exception Generate करता है तथा catch Block उस Exception को Handle करता है। C++ में Multiple catch Blocks, Nested try-catch, Rethrowing an Exception, Standard Exceptions तथा User Defined Exceptions जैसी सुविधाएँ उपलब्ध हैं, जो बड़े Software Systems को अधिक Reliable तथा Secure बनाती हैं।
| Concept | Description |
|---|---|
| Exception | Runtime पर उत्पन्न होने वाली असामान्य स्थिति। |
| Exception Handling | Runtime Errors को Detect तथा Handle करने की प्रक्रिया। |
| try Block | Risky Code रखने के लिए उपयोग किया जाता है। |
| throw Statement | Exception Generate करता है। |
| catch Block | Generated Exception को Handle करता है। |
| Multiple catch | विभिन्न प्रकार की Exceptions को Handle करता है। |
| User Defined Exception | Programmer द्वारा बनाई गई Custom Exception। |
| Applications | Banking, Database, File Handling, Web एवं Enterprise Applications। |
Important Viva Questions
- Exception क्या है?
- Exception Handling क्या है?
- try Block का क्या कार्य है?
- throw Statement क्या करता है?
- catch Block का उद्देश्य क्या है?
- Multiple catch Blocks क्या होते हैं?
- Nested try-catch क्या है?
- Rethrowing an Exception क्या है?
- User Defined Exception क्या है?
- Standard Exception क्या होती है?
University Examination Important Questions
- Exception Handling क्या है? उदाहरण सहित समझाइए।
- try, throw तथा catch Keywords को उदाहरण सहित समझाइए।
- Exception Handling Mechanism को Diagram सहित समझाइए।
- Multiple catch Blocks को उदाहरण सहित समझाइए।
- Nested try-catch क्या है? Program सहित समझाइए।
- Rethrowing an Exception को उदाहरण सहित समझाइए।
- User Defined Exception तथा Standard Exception में अंतर स्पष्ट कीजिए।
- Exception Handling तथा Traditional Error Handling में अंतर स्पष्ट कीजिए।
- Exception Handling के Advantages एवं Applications लिखिए।
- Runtime Errors को Exception Handling द्वारा कैसे Handle किया जाता है? समझाइए।
Exam Tips
- हमेशा याद रखें कि try, throw तथा catch Exception Handling के तीन मुख्य Keywords हैं।
- try Block के बाद कम से कम एक catch Block होना चाहिए।
- Matching Data Type वाला catch Block ही Execute होता है।
- throw; Statement द्वारा Exception को पुनः Throw किया जा सकता है।
- Multiple catch तथा Nested try-catch के Programs का अभ्यास करें।
- Standard Exceptions तथा User Defined Exceptions के उदाहरण अवश्य याद रखें।
- RGPV Practical एवं Viva में Exception Handling Programs अत्यंत महत्वपूर्ण होते हैं।
Conclusion
Exception Handling C++ Programming का एक अत्यंत महत्वपूर्ण Feature है जो Runtime Errors को सुरक्षित तथा व्यवस्थित तरीके से Handle करने की सुविधा प्रदान करता है। try, throw तथा catch Keywords की सहायता से Program Crash होने से बचाया जा सकता है तथा User को Meaningful Error Messages प्रदान किए जा सकते हैं। Multiple catch Blocks, Nested try-catch, Rethrowing an Exception, Standard Exceptions तथा User Defined Exceptions बड़े एवं Professional Software Systems के विकास में महत्वपूर्ण भूमिका निभाते हैं। Banking Systems, Hospital Management, Database Applications, Web Applications तथा Enterprise Software में Exception Handling का व्यापक उपयोग किया जाता है। RGPV B.Tech First Year के विद्यार्थियों के लिए यह Topic Theory, Practical तथा Viva तीनों दृष्टिकोण से अत्यंत महत्वपूर्ण है।
Related Articles
Standard Template Library (STL) in C++ Notes | Containers, Iterators & Algorithms | Basic Computer Engineering | RGPV BTech First Year
Standar...
Read More →Templates in C++ Notes | Function Templates, Class Templates & Generic Programming | Basic Computer Engineering | RGPV BTech First Year
Templat...
Read More →Virtual Functions in C++ Notes | Virtual Function, Pure Virtual Function & Dynamic Binding | Basic Computer Engineering | RGPV BTech First Year
Virtual...
Read More →Function Overriding in C++ Notes | Method Overriding, Runtime Polymorphism & Examples | Basic Computer Engineering | RGPV BTech First Year
Functio...
Read More →Constructors and Destructors in Inheritance Notes | Constructor & Destructor Calling Order in C++ | Basic Computer Engineering | RGPV BTech First Year
Constru...
Read More →