VB.Net में अपवाद प्रबंधन (ट्राई कैच)

⚡ स्मार्ट सारांश

VB.Net में एक्सेप्शन हैंडलिंग, Try, Catch, Finally और Throw कीवर्ड का उपयोग करके शून्य से भाग देने जैसी रनटाइम त्रुटियों को प्रबंधित करती है, ताकि प्रोग्राम निष्पादन के दौरान क्रैश होने के बजाय समस्याओं का सुचारू रूप से समाधान कर सके।

  • 🔍 अपवाद: निष्पादन के दौरान उत्पन्न होने वाली समस्या, उदाहरण के लिए किसी संख्या को शून्य से भाग देना।
  • पकड़ने की कोशिश करो: Try जोखिम भरे कोड को रैप करता है; Catch इससे उत्पन्न होने वाले अपवाद को संभालता है।
  • आखिरकार: Finally ब्लॉक तब भी चलता है जब कोई अपवाद उत्पन्न होता है या नहीं।
  • 🚦 फेंकना: Throw, System.Exception क्लास से व्युत्पन्न एक अपवाद ऑब्जेक्ट को उत्पन्न करता है।
  • 🧩 अनुकूलित अपवाद: अपने स्वयं के अपवाद प्रकारों को परिभाषित करने के लिए ApplicationException को इनहेरिट करें।
  • 🤖 एआई सहायता: GitHub Copilot और IntelliCode टाइप करते समय Try Catch ब्लॉक उत्पन्न करें।

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) कोड निष्पादित करने के लिए टूलबार से स्टार्ट बटन पर क्लिक करें। आपको निम्न आउटपुट मिलना चाहिए:

VB.Net Try Catch Finally के कंसोल आउटपुट में पकड़ी गई DivideByZeroException दिखाई गई है

कोड का स्क्रीनशॉट यहां दिया गया है:

विजुअल स्टूडियो में VB.Net Try Catch Finally का उदाहरण कोड दिखाया गया है।

का स्पष्टीकरण Code:

  1. Module1 नामक एक मॉड्यूल बनाना.
  2. दो पूर्णांक तर्क n1 और n2 के साथ DivisionFunction नामक एक उप-प्रक्रिया बनाना। ByVal एक VB.Net कीवर्ड है जो बताता है कि तर्कों के मानों को मान द्वारा पारित किया जाएगा।
  3. उत्तर नामक एक पूर्णांक चर बनाना.
  4. Try/Catch ब्लॉक की शुरुआत। हमें उस कोड को इस ब्लॉक के साथ घेरना होगा जिसके बारे में हमें संदेह है कि वह अपवाद उत्पन्न कर सकता है।
  5. चर n1 और n2 के मानों के बीच विभाजन ऑपरेशन करना। विभाजन ऑपरेशन का परिणाम चर उत्तर को सौंपा जाता है। यह कोड अपवाद उत्पन्न कर सकता है, उदाहरण के लिए, जब हम किसी संख्या को शून्य से विभाजित करते हैं, इसलिए हमने इसे Try/Catch ब्लॉक से घेर दिया है।
  6. DivideByZeroException नामक अपवाद को पकड़ना और उत्पन्न अपवाद संदेश को ex को सौंपना।
  7. कंसोल पर कुछ पाठ मुद्रित करना, ताकि उपयोगकर्ता को उठाए गए अपवाद के प्रकार/नाम के बारे में सूचित किया जा सके।
  8. अंत में ब्लॉक। यह तब भी निष्पादित होगा जब अपवाद पकड़ा गया हो या नहीं।
  9. विभाजन ऑपरेशन का परिणाम दिखाते हुए कंसोल पर कुछ पाठ मुद्रित करना।
  10. ट्राई ब्लॉक का अंत, अर्थात त्रुटि-नियंत्रक कोड का अंत।
  11. डिवीज़नफ़ंक्शन उप-प्रक्रिया का अंत.
  12. मुख्य उप-प्रक्रिया का प्रारंभ.
  13. डिवीज़नफ़ंक्शन उप-प्रक्रिया को कॉल करना/आह्वान करना। यहाँ दो पूर्णांक तर्कों के मान पास किए जाते हैं। n1=4 और n2=0 का मान। इसका मतलब है कि विभाजन ऑपरेशन 4\0 होगा, यानी n1\n2।
  14. कंसोल विंडो को उपयोगकर्ता द्वारा इसे बंद करने के लिए की जाने वाली कार्रवाई की प्रतीक्षा में रोकना।
  15. मुख्य उप-प्रक्रिया का अंत.
  16. मॉड्यूल का अंत.

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) कोड निष्पादित करने के लिए शीर्ष बार से प्रारंभ बटन पर क्लिक करें। आपको निम्न आउटपुट मिलना चाहिए:

VB.Net उपयोगकर्ता-परिभाषित HeightIsZeroException संदेश कंसोल पर मुद्रित होता है

कोड का स्क्रीनशॉट यहां दिया गया है:

विजुअल स्टूडियो में VB.Net उपयोगकर्ता-परिभाषित अपवाद वर्ग का उदाहरण कोड।

का स्पष्टीकरण Code:

  1. Module1 नामक एक मॉड्यूल बनाना.
  2. HeightIsZeroException नामक अपवाद वर्ग बनाना। यह वर्ग सभी ApplicationException वर्ग को इनहेरिट करता है।
  3. नया नाम से एक उप-प्रक्रिया बनाना। यह text नाम से एक स्ट्रिंग तर्क लेगा।
  4. बेस क्लास कन्स्ट्रक्टर को कॉल करना और उसे उपरोक्त तर्क पास करना।
  5. नई उप-प्रक्रिया का अंत.
  6. HeightIsZeroException वर्ग का अंत.
  7. Height नामक एक क्लास बनाना। इसका पब्लिक एक्सेस मॉडिफायर Public है, जिसका अर्थ है कि यह सार्वजनिक रूप से सुलभ होगा।
  8. Height नामक एक पूर्णांक चर बनाना और उसका मान 0 पर आरंभ करना।
  9. showHeight() नामक उप-प्रक्रिया बनाना।
  10. चर Height का मान 0 होने की जाँच करना। हमने If…Then शर्त का उपयोग किया है।
  11. यदि उपरोक्त शर्त सत्य है तो HeightIsZeroException को फेंकना है। जब यह अपवाद फेंका जाएगा तो संदेश Zero Height Found दिखाया जाएगा।
  12. जब If स्थिति सत्य न हो तो Else भाग निष्पादित किया जाएगा।
  13. कंसोल पर प्रिंट करने के लिए संदेश, जिसमें ऊँचाई दिखाई गई हो, जब वह 0 न हो।
  14. यदि स्थिति का अंत.
  15. showHeight() उपप्रक्रिया का अंत.
  16. कक्षा की ऊंचाई का अंत.
  17. मुख्य उप-प्रक्रिया का प्रारंभ.
  18. Height वर्ग के उदाहरण के रूप में Height नामक ऑब्जेक्ट का निर्माण करना।
  19. अपवाद हैंडलिंग ब्लॉक का प्रारंभ.
  20. Height क्लास में परिभाषित showHeight() सब-प्रोसीजर को कॉल किया जा रहा है। हमने इस मेथड को एक्सेस करने के लिए इसी क्लास के ऑब्जेक्ट का उपयोग किया है। इस लाइन से एक्सेप्शन आ सकता है। इसलिए, हमने इसे एक्सेप्शन हैंडलिंग कोड से घेर दिया है।
  21. यदि ऐसा होता है तो HeightIsZeroException अपवाद को ऑब्जेक्ट ex के रूप में पकड़ना।
  22. जब HeightIsZeroException पकड़ी जाती है तो कंसोल पर प्रिंट करने के लिए संदेश.
  23. अपवाद हैंडलिंग ब्लॉक का अंत.
  24. कंसोल विंडो को उपयोगकर्ता द्वारा इसे बंद करने के लिए की जाने वाली कार्रवाई की प्रतीक्षा में रोकें।
  25. मुख्य उप-प्रक्रिया का अंत.
  26. मॉड्यूल का अंत.

VB.Net में अपवाद फेंकें

अपवाद प्रबंधन में, आप एक ऑब्जेक्ट को थ्रो करने का विकल्प चुन सकते हैं। हालाँकि, ऑब्जेक्ट प्रत्यक्ष या अप्रत्यक्ष रूप से System.Exception क्लास से व्युत्पन्न होना चाहिए। उदाहरण के लिए:

VB.Net में Throw Exception का उदाहरण

नीचे VB.Net में एक्सेप्शन थ्रो करने का एक उदाहरण दिया गया है:

चरण 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) कोड निष्पादित करने के लिए शीर्ष बार से प्रारंभ बटन पर क्लिक करें। आपको निम्नलिखित प्राप्त होना चाहिए:

VB.Net थ्रो स्टेटमेंट का कंसोल आउटपुट कस्टम अपवाद संदेश प्रदर्शित करता है

कोड का स्क्रीनशॉट यहां दिया गया है:

VB.Net में Try Catch Finally का उपयोग करके अपवाद उत्पन्न करने का उदाहरण कोड

का स्पष्टीकरण Code:

  1. Module1 नामक एक मॉड्यूल बनाना.
  2. मुख्य उप-प्रक्रिया का प्रारंभ.
  3. त्रुटि प्रबंधन कोड का प्रारंभ.
  4. अपवाद ऑब्जेक्ट को फेंकना। यह कोड अपवाद उत्पन्न कर सकता है, इसलिए हमने इसे Try/Catch ब्लॉक से घेर दिया है।
  5. ऑब्जेक्ट के रूप में अपवाद को पकड़ना, उदाहरण के लिए यदि रेखा अपवाद उत्पन्न करती है।
  6. यदि अपवाद उत्पन्न हो तो कंसोल पर अपवाद संदेश मुद्रित करना।
  7. यह ब्लॉक अंततः चलाया जाता है, चाहे अपवाद पकड़ा गया हो या नहीं।
  8. अंततः ब्लॉक निष्पादित होने पर कंसोल पर प्रिंट करने हेतु संदेश।
  9. अपवाद प्रबंधन कोड का अंत.
  10. कंसोल को कुछ समय के लिए रोकें और उपयोगकर्ता द्वारा इसे बंद करने के लिए कार्रवाई किए जाने की प्रतीक्षा करें।
  11. मुख्य उप-प्रक्रिया का अंत.
  12. मॉड्यूल का अंत.

अक्सर पूछे जाने वाले प्रश्न

जी हाँ। Try स्टेटमेंट बिना Catch ब्लॉक के भी मान्य है, बशर्ते उसमें Finally ब्लॉक शामिल हो। Try Finally का यह प्रारूप क्लीनअप कोड तो चलाता है, लेकिन एक्सेप्शन को स्वयं हैंडल नहीं करता।

हाँ। विभिन्न प्रकार के अपवादों को संभालने के लिए कई कैच ब्लॉक सूचीबद्ध करें। उन्हें सबसे विशिष्ट से कम विशिष्ट क्रम में व्यवस्थित करें, क्योंकि VB.Net उन्हें क्रम से जांचता है और पहले मिलान का उपयोग करता है।

लगभग हमेशा। यह अंततः तब भी निष्पादित होता है जब कोई अपवाद पकड़ा जाता है या नहीं, और यहां तक ​​कि रिटर्न के बाद भी। इसे केवल एंड स्टेटमेंट या स्टैकओवरफ्लोएक्सेप्शन की स्थिति में ही छोड़ा जाता है।

Throw वर्तमान अपवाद को पुनः उत्पन्न करता है और इसके मूल स्टैक को संरक्षित रखता है। trace. थ्रो ex स्टैक को रीसेट करता है tracत्रुटि के वास्तविक आरंभ स्थान को छिपाते हुए, इसे वर्तमान पंक्ति में जोड़ दें। इसके बजाय, केवल Throw फ़ंक्शन का उपयोग करें।

प्रोग्राम चलने से पहले ही कंपाइलर द्वारा सिंटैक्स त्रुटि पकड़ ली जाती है। एक्सेप्शन रनटाइम पर, यानी निष्पादन के दौरान उत्पन्न होता है, और इसे ट्राई कैच ब्लॉक की सहायता से हल किया जा सकता है।

इनमें अक्सर होने वाली त्रुटियों में DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException और OverflowException शामिल हैं। ये सभी System.Exception से इनहेरिट होती हैं और इन्हें अलग-अलग पकड़ा जा सकता है।

हां. गिटहब कोपिलॉट यह सरल अंग्रेजी में लिखे गए कमेंट को पूर्ण Try Catch Finally ब्लॉक में बदल देता है और सही एक्सेप्शन टाइप का सुझाव देता है। जेनरेट किए गए हैंडलर की हमेशा समीक्षा करें।

हाँ। विजुअल स्टूडियो खुफियाCode यह कैच क्लॉज़ और अपवाद प्रकारों के लिए संदर्भ-जागरूक, संपूर्ण पंक्ति पूर्णता प्रदान करता है, जो हजारों ओपन-सोर्स परियोजनाओं से सीखा गया है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: