VB.Net में अपवाद प्रबंधन: ट्राई और कैच हैंडलिंग उदाहरण
VB.Net में अपवाद क्या है?
An अपवाद VB.Net में प्रोग्राम निष्पादन के दौरान उत्पन्न होने वाली समस्या को संदर्भित करता है। यह एक अप्रत्याशित परिस्थिति के कारण होता है। एक अच्छा उदाहरण है जब आप विभाजन ऑपरेशन कर रहे होते हैं, और फिर आप शून्य (0) से भाग देते हैं। एक अपवाद उठाया जाएगा।
VB.Net में अपवाद प्रबंधन क्या है?
अपवादों के साथ VB.Net, आप किसी प्रोग्राम के नियंत्रण को एक भाग से दूसरे भाग में स्थानांतरित कर सकते हैं। VB.Net में, अपवादों को निम्नलिखित 4 कीवर्ड का उपयोग करके नियंत्रित किया जाता है:
खोजशब्द | विस्तार |
---|---|
Thử | ट्राई ब्लॉक का काम उस कोड ब्लॉक की पहचान करना है जिसके लिए एक विशिष्ट अपवाद सक्रिय किया जाएगा। इसके बाद कैच ब्लॉक (ब्लॉक) होना चाहिए। |
कुश्ती | इस ब्लॉक में Exception को पकड़ने का काम किया जाता है। यह एक exception handler है जिसमें Exception को हैंडल किया जाता है। |
अंत में | चाहे अपवाद उत्पन्न हुआ हो या नहीं, कथनों का एक सेट चलाने के लिए अंततः ब्लॉक का उपयोग करें। |
फेंकना | किसी समस्या के घटित होने के बाद अपवाद को फेंका जाता है। यह Throw कीवर्ड का काम है। |
VB.Net में Try Catch का सिंटैक्स
VB.Net में Try Catch कथनों को नीचे दिए गए सिंटैक्स का उपयोग करके परिभाषित किया गया है:
Try [ try_Statement(s) ] [ Exit Try ] [ Catch [ exception_name [ As type ] ] [ When expression ] [ catch_Statement(s) ] [ Exit Try ] ] [ Catch ... ] [ Finally [ finally_Statement(s) ] ] End Try
Try/Catch ब्लॉक को उस कोड के चारों ओर होना चाहिए जो अपवाद उत्पन्न कर सकता है। इस कोड को संरक्षित कोड के रूप में जाना जाता है। जब आपको विभिन्न प्रकार के अपवादों को पकड़ने की आवश्यकता होती है, तो आप कई कैच स्टेटमेंट का उपयोग कर सकते हैं।
Try Catch और Finaly के साथ VB.Net में अपवाद प्रबंधन उदाहरण
Try/Catch कथनों के साथ, आप अपने साधारण प्रोग्राम कोड को त्रुटि-हैंडलिंग सिस्टम से अलग कर सकते हैं। आइए हम Try, Catch और Finally कीवर्ड का उपयोग करके अपवाद को संभालने का तरीका प्रदर्शित करें।
चरण 1) एक नया कंसोल अनुप्रयोग बनाएँ.
चरण 2) इस कोड का प्रयोग करें:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
चरण 3) कोड निष्पादित करने के लिए टूलबार से स्टार्ट बटन पर क्लिक करें। आपको निम्न आउटपुट मिलना चाहिए:
कोड का स्क्रीनशॉट यहां दिया गया है:
कोड की व्याख्या:
- Module1 नामक एक मॉड्यूल बनाना.
- दो पूर्णांक तर्क n1 और n2 के साथ DivisionFunction नामक एक उप-प्रक्रिया बनाना। ByVal एक VB.Net कीवर्ड है जो बताता है कि तर्कों के मानों को मान द्वारा पारित किया जाएगा।
- उत्तर नामक एक पूर्णांक चर बनाना.
- Try/Catch ब्लॉक की शुरुआत। हमें उस कोड को इस ब्लॉक के साथ घेरना होगा जिसके बारे में हमें संदेह है कि वह अपवाद उत्पन्न कर सकता है।
- चर n1 और n2 के मानों के बीच विभाजन ऑपरेशन करना। विभाजन ऑपरेशन का परिणाम चर उत्तर को सौंपा जाता है। यह कोड अपवाद उत्पन्न कर सकता है, उदाहरण के लिए, जब हम किसी संख्या को शून्य से विभाजित करते हैं, इसलिए हमने इसे Try/Catch ब्लॉक से घेर दिया है।
- DivideByZeroException नामक अपवाद को पकड़ना और उत्पन्न अपवाद संदेश को ex को सौंपना।
- कंसोल पर कुछ पाठ मुद्रित करना, ताकि उपयोगकर्ता को उठाए गए अपवाद के प्रकार/नाम के बारे में सूचित किया जा सके।
- अंत में ब्लॉक। यह तब भी निष्पादित होगा जब अपवाद पकड़ा गया हो या नहीं।
- विभाजन ऑपरेशन का परिणाम दिखाते हुए कंसोल पर कुछ पाठ मुद्रित करना।
- ट्राई ब्लॉक का अंत, अर्थात त्रुटि-नियंत्रक कोड का अंत।
- डिवीज़नफ़ंक्शन उप-प्रक्रिया का अंत.
- मुख्य उप-प्रक्रिया का प्रारंभ.
- डिवीज़नफ़ंक्शन उप-प्रक्रिया को कॉल करना/आह्वान करना। यहाँ दो पूर्णांक तर्कों के मान पास किए जाते हैं। n1=4 और n2=0 का मान। इसका मतलब है कि विभाजन ऑपरेशन 4\0 होगा, यानी n1\n2।
- कंसोल विंडो को उपयोगकर्ता द्वारा इसे बंद करने के लिए की जाने वाली कार्रवाई की प्रतीक्षा में रोकना।
- मुख्य उप-प्रक्रिया का अंत.
- मॉड्यूल का अंत.
VB.Net में उपयोगकर्ता परिभाषित अपवाद
VB.Net आपको अपने खुद के अपवाद परिभाषित करने की अनुमति देता है। आप ApplicationException क्लास से उपयोगकर्ता-परिभाषित अपवाद क्लास प्राप्त कर सकते हैं। आइए इसे एक उदाहरण से प्रदर्शित करें:
VB.Net में उपयोगकर्ता परिभाषित अपवाद का उदाहरण
यहाँ VB.Net में उपयोगकर्ता परिभाषित अपवाद का एक उदाहरण दिया गया है:
चरण 1) एक नया कंसोल अनुप्रयोग बनाएँ.
चरण 2) निम्नलिखित कोड का प्रयोग करें:
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
चरण 3) कोड निष्पादित करने के लिए शीर्ष बार से प्रारंभ बटन पर क्लिक करें। आपको निम्न आउटपुट मिलना चाहिए:
कोड का स्क्रीनशॉट यहां दिया गया है:
कोड की व्याख्या:
- Module1 नामक एक मॉड्यूल बनाना.
- HeightIsZeroException नामक अपवाद वर्ग बनाना। यह वर्ग सभी ApplicationException वर्ग को इनहेरिट करता है।
- नया नाम से एक उप-प्रक्रिया बनाना। यह text नाम से एक स्ट्रिंग तर्क लेगा।
- बेस क्लास कन्स्ट्रक्टर को कॉल करना और उसे उपरोक्त तर्क पास करना।
- नई उप-प्रक्रिया का अंत.
- HeightIsZeroException वर्ग का अंत.
- Height नामक एक क्लास बनाना। इसका पब्लिक एक्सेस मॉडिफायर Public है, जिसका अर्थ है कि यह सार्वजनिक रूप से सुलभ होगा।
- Height नामक एक पूर्णांक चर बनाना और उसका मान 0 पर आरंभ करना।
- showHeight() नामक उप-प्रक्रिया बनाना।
- चर Height का मान 0 होने की जाँच करना। हमने If…Then शर्त का उपयोग किया है।
- यदि उपरोक्त शर्त सत्य है तो HeightIsZeroException को फेंकना है। जब यह अपवाद फेंका जाएगा तो संदेश Zero Height Found दिखाया जाएगा।
- जब If स्थिति सत्य न हो तो Else भाग निष्पादित किया जाएगा।
- कंसोल पर प्रिंट करने के लिए संदेश, जिसमें ऊँचाई दिखाई गई हो, जब वह 0 न हो।
- यदि स्थिति का अंत.
- showHeight() उपप्रक्रिया का अंत.
- कक्षा की ऊंचाई का अंत.
- मुख्य उप-प्रक्रिया का प्रारंभ.
- Height वर्ग के उदाहरण के रूप में Height नामक ऑब्जेक्ट का निर्माण करना।
- अपवाद हैंडलिंग ब्लॉक का प्रारंभ.
- Height क्लास में परिभाषित showHeight() उप-प्रक्रिया को लागू करना। हमने इस विधि तक पहुँचने के लिए इस क्लास के ऑब्जेक्ट का उपयोग किया है। यह लाइन अपवाद में परिणत हो सकती है। इसलिए, हमने इसे अपवाद हैंडलिंग कोड से घेर दिया है।
- यदि ऐसा होता है तो HeightIsZeroException अपवाद को ऑब्जेक्ट ex के रूप में पकड़ना।
- जब HeightIsZeroException पकड़ी जाती है तो कंसोल पर प्रिंट करने के लिए संदेश.
- अपवाद हैंडलिंग ब्लॉक का अंत.
- कंसोल विंडो को उपयोगकर्ता द्वारा इसे बंद करने के लिए की जाने वाली कार्रवाई की प्रतीक्षा में रोकें।
- मुख्य उप-प्रक्रिया का अंत.
- मॉड्यूल का अंत.
VB.Net में अपवाद फेंकें
अपवाद हैंडलिंग में, आप ऑब्जेक्ट को थ्रो करना चुन सकते हैं। हालाँकि, ऑब्जेक्ट को सीधे या अप्रत्यक्ष रूप से सिस्टम.एक्सेप्शनक्लास से प्राप्त किया जाना चाहिए। उदाहरण के लिए:
VB.Net में Throw Exception का उदाहरण
नीचे VB.Net में throw exception का एक उदाहरण दिया गया है:
चरण 1) एक नया कंसोल अनुप्रयोग बनाएँ.
चरण 2) निम्नलिखित कोड का प्रयोग करें:
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
चरण 3) कोड निष्पादित करने के लिए शीर्ष बार से प्रारंभ बटन पर क्लिक करें। आपको निम्नलिखित प्राप्त होना चाहिए:
कोड का स्क्रीनशॉट यहां दिया गया है:
कोड की व्याख्या:
- Module1 नामक एक मॉड्यूल बनाना.
- मुख्य उप-प्रक्रिया का प्रारंभ.
- त्रुटि प्रबंधन कोड का प्रारंभ.
- अपवाद ऑब्जेक्ट को फेंकना। यह कोड अपवाद उत्पन्न कर सकता है, इसलिए हमने इसे Try/Catch ब्लॉक से घेर दिया है।
- ऑब्जेक्ट के रूप में अपवाद को पकड़ना, उदाहरण के लिए यदि रेखा अपवाद उत्पन्न करती है।
- यदि अपवाद उत्पन्न हो तो कंसोल पर अपवाद संदेश मुद्रित करना।
- यह ब्लॉक अंततः चलाया जाता है, चाहे अपवाद पकड़ा गया हो या नहीं।
- अंततः ब्लॉक निष्पादित होने पर कंसोल पर प्रिंट करने हेतु संदेश।
- अपवाद प्रबंधन कोड का अंत.
- कंसोल को कुछ समय के लिए रोकें और उपयोगकर्ता द्वारा इसे बंद करने के लिए कार्रवाई किए जाने की प्रतीक्षा करें।
- मुख्य उप-प्रक्रिया का अंत.
- मॉड्यूल का अंत.
सारांश
- अपवाद से तात्पर्य उस समस्या से है जो प्रोग्राम निष्पादन के दौरान किसी अप्रत्याशित परिस्थिति के कारण उत्पन्न होती है।
- यदि आपको संदेह है कि कोई कोड अपवाद उत्पन्न करेगा, तो उसे Try/Catch ब्लॉक से घेर दें।
- अंततः ब्लॉक, Try/Catch ब्लॉक के बाद आता है और चाहे अपवाद पकड़ा जाए या नहीं, निष्पादित होता है।
- VB.Net हमें कस्टम अपवाद बनाने की अनुमति देता है।