Java में Exception Handling एक mechanism है जो Runtime error (Exception) से निपटने के लिए होता है जो Program के normal flow को बाधित कर सकता है। यह आपको इन error को gracefully से handle की अनुमति देता है, बजाय इसके कि Program Crash हो जाए।
वे घटनाएं हैं जो Program के execution के दौरान होती हैं जो instructions के normal flow को disrupt करती हैं। वे अनिवार्य रूप से Runtime error हैं।
- Arithmetic Exception: Zero से divide करना।
- Null Pointer Exception: एक null object के member तक पहुंचने की कोशिश करना।
- Array Index Out Of Bounds Exception: किसी ऐरे element को उसकी valid indices के बाहर Access करने की कोशिश करना।
- IO Exception: input/output operations में Problems (जैसे, file नहीं मिली)।
- Class Not Found Exception: किसी ऐसे class को load करने की कोशिश करना जो मौजूद नहीं है।
- SQL Exception: database operations से संबंधित error ।
Key Concepts and Keywords:
Java का Excepton Handling mechanism इन keyword के इर्द-गिर्द घूमता है:
- try: इस block में वह code होता है जो Exception Throw कर सकता है। आप इस code को “Try” करते हैं, यह जानते हुए कि यह problematic हो सकता है।
- catch: यह block (या block) try block का follows करता है और एक specific type के Exception को handle करता है। आप different type के Exception को handle करने के लिए कई catch block रख सकते हैं। catch block का parameter exception के type को exception करता है जिसे वह handle कर सकता है।
- finally: यह block try और catch block का follows करता है। finally block में code हमेशा executes होता है, चाहे कोई Exception throw किया गया हो या पकड़ा गया हो। इसका उपयोग आमतौर पर cleanup operations के लिए किया जाता है (जैसे, file close करना, resourse जारी करना)
- throw: इस keyword का उपयोग स्पष्ट रूप से Exception throw करने के लिए किया जाता है। आप अपने custom Exception बना सकते हैं या मौजूदा Exception को re-throw कर सकते हैं।
How it Works:
- try block के भीतर का code executes होता है।
- यदि try block के भीतर कोई exception होता है:
- JVM exception के प्रकार को handle करने के लिए एक matching catch block की तलाश करता है।
- यदि कोई matching catch block मिलता है, तो उस catch block के भीतर का code excute होता है।
- यदि कोई matching catch block नहीं मिलता है, तो exception block stack (calling methods के लिए) में ऊपर की ओर प्रचारित होता है। यदि कोई method इसे handle नहीं करता है, तो program समाप्त हो सकता है।
- finally block (यदि मौजूद है) हमेशा try और catch block के बाद executes होता है, चाहे कोई exception throw किया गया हो या पकड़ा गया हो।
- प्रोग्राम try-catch-finally block के बाद exception जारी रखता है।
Checked vs. Unchecked Exceptions:
- Checked Exceptions: ये वे exception हैं जिन्हें compiler आपको handle करने के लिए मजबूर करता है (या तो try-catch द्वारा या यह announce करके कि आपका method exception throw करता है)। वे आम तौर पर I/O operation या अन्य स्थितियों से संबंधित होते हैं जहां recovery संभव हो सकती है। उदाहरण: IO Exception, SQL Exception।
- Unchecked Exceptions: ये वे exception हैं जिन्हें compiler आपको handle करने के लिए मजबूर नहीं करता है। वे आम तौर पर runtime exception होते हैं जो programming error (जैसे, Null Pointer Exception, Array Index Out Of Bounds Exception, Arithmetic Exception) का संकेत देते हैं। जबकि आप उन्हें handle कर सकते हैं, आपको ऐसा करने की आवश्यकता नहीं है।
यह detailed explanation आपको java में exception handling की solid समझ देगा। याद रखें कि इसका उपयोग judiciously से मजबूत और बनाए रखने योग्य code बनाने के लिए करें। केवल exception को पकड़ें और उन्हें अनदेखा न करें; उन्हें उचित रूप से handle करें या यदि आवश्यक हो तो उन्हें re-throw करें। printStackTrace() का उपयोग करना या exception details को logging करना debugging के लिए important है।