Exception Handling in Java: जावा Exception एक Object होता है, जो किसी Run Time Error को Represent करता है। ये एक तरह का Exception Event Object या Abnormal Event Object है, जो तब Generate होता है, जब Program अपने Normal Flow से अचानक Disturb हो जाता है। जावा Program में जब भी कोई Run Time Error Generate होने की सम्भावना होती है, तो उस Run Time Error को Exception कहा जाता है।
जावा Interpreter Program को Normal Flow में Run करता रहता है। लेकिन यदि किसी कारणवश जावा Interpreter को कोई Statement Execute करने में परेशानी होती है, तो जावा Interpreter उस Statement से सम्बंधित परेशानी को एक Object Create करके Represent करता है। इस Object को Exception Object कहा जाता है। जब जावा Interpreter कोई Exception Object Create करता है, तो सामान्य भाषा में इसे Exception Object Throw करना कहा जाता है। यानी जावा को जब भी कभी किसी Statement को Run करने में परेशानी होती है, जावा एक Exception Object Create करके Throw करता है।
यदि जावा कोई Exception Object Throw करता है और उस Exception Object को हमारे Program का कोई भी Error Handling Method Catch करके सही तरीके से Handle नहीं करता है, तो वह Error Object जावा के Default Exception Handler पर चला जाता है और जावा का Default Exception Handler उस Exception को Handle करने के Response में एक Error Message Display करके Program को Terminate कर देता है। जब इस प्रकार की किसी Error से Program Terminate होता है, तो इस प्रक्रिया को Program का Crash होना कहते हैं।
सामान्यतया हम ये कभी नहीं चाहते हैं कि हमारा Program कभी भी किसी भी स्थिति में बिना Proper Output दिए Terminate हो जाए या Crash हो जाए। हम हमेंशा यही चाहते हैं कि हमारा Program हमेंशा सही तरह से Run हो और हमेंशा सही Result ही प्रदान करे।
इस स्थिति में ये जरूरी हो जाता है कि यदि कभी किसी Program में किसी प्रकार की कोई Run Time Error Generate हो भी जाती है, तो भी हमारा Program Continue रहे और अपने Program में ये स्थिति हम तभी प्राप्त कर सकते हैं, जब हम Program की विभिन्न Run Time Errors को Handle करने के लिए पहले से ही कोई ना कोई व्यवस्था कर दें। जावा में Exceptions को Handle करने के लिए एक सुव्यवस्थित Object Oriented Approach को Develop किया गया है।
जावा में जब भी कोई Exception Generate होता है, जावा उस Exception को Represent करता हुआ एक Object Create करके Throw करता है। इस Object में Generate होने वाली Error से सम्बंधित जानकारियां होती हैं। जावा द्वारा Throw किए जाने वाले इस Exception Object को एक Exception Handler Method में Catch कर लिया जाता है।
चूंकि इस Object में Exception से सम्बंधित जानकारियां भी होती हैं, इसलिए इस Object को ठीक तरीके से Manage करके Program Control को फिर से उसी Statement से अगले Statement पर भेज दिया जाता है, जिस Statement पर Exception Generate हुआ था।
चूंकि Exception Handling Method Program Control को फिर से उस Statement से आगे के सभी Statement को सामान्य तरीके से Execute करने के लिए भेज देता है, जहां Exception Generate हुआ था, इसलिए Exception Generate होने पर भी Program Crash हो कर Terminate नहीं होता है। Exception को इस प्रकार से Handle करने की Process को “Exception Handling Process” कहा जाता है।
Exception Handling Process एक ऐसा Mechanism है, जो हमें किसी Error को Detect करने की सुविधा देता है, ताकि हम उस Exception को Handle कर सकें। इस Mechanism में अलग से एक Error Exception Handling Code Block लिखा जाता है। ये Code Block निम्न काम करता है:
Problem Find करता है। (Hit the Exception) कोई Exception Generate होने पर Inform करता है। (Throw the Exception) Error की Information को Exception Object से Receive करता है। (Catch the Exception) उचित Action Perform करता है। (Handle the Exception)
सामान्यतया Error Handling Code के दो भाग होते हैं। पहला भाग Error को Detect करता है और Exception Object Throw करता है तथा दूसरा भाग Exception को Handle करने के लिए Appropriate Actions Perform करता है। हम जब भी कोई Program लिखते हैं, हमें हमेंशा ये तय करने की कोशिश करनी होती है कि किस स्थिति में किस प्रकार का Exception Generate हो सकता है और उस Exception को किस प्रकार से Handle किया जाना चाहिए।
जावा में Exception Handling को मुख्यतया पांच Keywords try, catch, throw, throws व finally द्वारा Manage किया जाता है। हम जिस Program Statement को Exception के लिए Monitor करना चाहते हैं या जो Code Statements Exceptions Generate कर सकते हैं, उन Statements को हम try Block में लिखते हैं। try Block में लिखे गए Code Statements में यदि कोई Exception Generate होता है, तो try Block उस Exception Object को Throw करता है। try Block द्वारा Throw किए गए Exception Object को Catch करने के लिए try Block से Just नीचे catch Block लिखा जाता है। catch Block try द्वारा Throw किए गए Exception Object को Catch करके Appropriate Actions Perform करता है और Program Control को फिर से try Block में उस Statement से अगले Statement पर भेज देता है, जहां Exception Generate हुआ था।
System Generated Exceptions को जावा स्वयं ही Automatically Java Run Time Environment पर Throw कर देता है। हम Manually भी किसी Exception को Throw कर सकते हैं। किसी Exception को Manually Throw करने के लिए हमें जावा के throw Keyword का प्रयोग करना पडता है। यदि कोई Method ऐसा Exception Generate करने में सक्षम हो, जिसे वह Method स्वं; Handle नहीं कर सकता है, तो इस प्रकार के Exception को वह Method Handle करता है, जो Method Exception Generate करने वाले इस Method को Call करता है।
इस प्रकार की स्थिति जिसमें Method Exception Throw कर सकता है, Exception को Throw करवाने के लिए हमें throws Keyword के Statement का प्रयोग करना पडता है। throws Statement का प्रयोग उन Exceptions की List Create करने के लिए किया जाता है, जिन्हें Method Throw करता है। जब भी कभी किसी Statement पर कोई Exception Generate होता है, Program Control उस Statement से आगे के Statements को Ignore कर देता है। लेकिन कुछ स्थितियां ऐसी होती हैं, जिसमें किसी Statement पर Exception Generate होने के बावजूद भी Program के कुछ अन्य Statement का Execution करने के बाद ही उस Exception को Handle करना होता है।
इस प्रकार के जितने भी Statements होते हैं, जिन्हें किसी भी स्थिति में Exception Handling से पहले ही Execute करना जरूरी होता है, उन्हें finally Block में लिखा जाता है। किसी Exception को Handle करने का General Block निम्नानुसार होता है:
try { // Block of codes to be monitored for errors } catch(ExceptionType1 excepObj) { // Exception Handler for ExceptionType1 } catch(ExceptionType2 excepObj) { // Exception Handler for ExceptionType2 } . . . . . . . . . catch(ExceptionTypeN excepObj) { // Exception Handler for ExceptionTypeN } finally(ExceptionType2 excepObj) { // Block of codes which must be executed before try block ends }
यहां ExceptionType वह Class है, जिसके Exception Object Throw हुए हैं। इससे आगे के अध्याय में यही बताया गया है कि हम Exception Handling की इस तकनीक को किस प्रकार से Use कर सकते हैं।
Exception Handling in Java – The Exception Types
जावा में जितने भी प्रकार की Exceptions को Represent करने वाली ExceptionType Classes हैं, वे सभी Built-In Throwable Class की Sub Classes हैं। अत: Throwable Class Exception Hierarchy Classes की Top की Super Class है। Throwable Class की दो Sub Classes हैं, जो किसी Exception को दो Distinct Branch में विभाजित कर देता है।
पहली Sub Class का नाम Exception है। इस Class का प्रयोग Exceptional Condition यानी Exception को Represent करने वाले Object को Create करके Throw करने के लिए किया जाता है, जिसे हमारा Program catch Block में Catch करता है। साथ ही यदि हम हमारे स्वयं के Exceptions की Custom Class बनाना चाहते हैं, तो वह नई Class इसी Sub Class की Sub Class होती है। Exception Class की एक और बहुत ही महत्वपूर्ण Class है, जिसे RuntimeException Class कहा जाता है। Division By Zero, Invalid Array Indexing इसी प्रकार के Exceptions के उदाहरण हैं। विभिन्न प्रकार के Runtime Exceptions हमारे द्वारा Create किए जा रहे किसी भी Program की Class के लिए Automatically Define हो जाते हैं।
Throwable Class की दूसरी Sub Class का नाम Error Class है। ये उन Exceptions को Define करते हैं, जिन्हें Program के Normal Flow में Catch किए जाने की सम्भावना नहीं होती है। Error प्रकार के Exceptions को Java Runtime Environment System स्वं; Handle करता है। Stack Overflow होना इसी प्रकार की एक Error है, जिसे जावा स्वं; Handle करता है। इसके लिए हम हमारे Program में किसी प्रकार की कोई व्यवस्था नहीं करते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Java Programming Language in Hindi | Page: 682 | Format: PDF