प्रयास करें ... पकड़ो ... अंत में, फेंकता है, VB.Net में उपयोगकर्ता परिभाषित अपवाद

विषय - सूची:

Anonim

एक अपवाद क्या है?

एक अपवाद एक समस्या को संदर्भित करता है जो कार्यक्रम के निष्पादन के दौरान उत्पन्न होता है। यह एक अप्रत्याशित परिस्थिति द्वारा लाया जाता है। एक अच्छा उदाहरण है जब आप एक डिवीजन ऑपरेशन कर रहे हैं, और फिर आप शून्य (0) से विभाजित करते हैं। एक अपवाद उठाया जाएगा।

इस विज़ुअल बेसिक ट्यूटोरियल में, आप सीखेंगे:

  • एक अपवाद क्या है?
  • अपवाद हैंडलिंग क्या है?
  • सिंटेक्स ऑफ़ ट्राई / कैच
  • उदाहरण अपवादों को संभालने के लिए
  • उपयोगकर्ता-परिभाषित अपवाद
  • वस्तुओं को फेंकना

अपवाद हैंडलिंग क्या है?

अपवादों के साथ, आप एक कार्यक्रम के नियंत्रण को एक भाग से दूसरे भाग में स्थानांतरित कर सकते हैं। VB.NET में, निम्नलिखित 4 कीवर्ड का उपयोग करके अपवादों को नियंत्रित किया जाता है:

कीवर्ड विस्तार
प्रयत्न कोशिश ब्लॉक का काम कोड ब्लॉक की पहचान करना है जिसके लिए एक विशिष्ट अपवाद सक्रिय हो जाएगा। इसका पालन कैच ब्लॉक (ओं) द्वारा किया जाना चाहिए।
पकड़ इस ब्लॉक में एक्सेप्शन की कैचिंग की जाती है। यह एक अपवाद हैंडलर है जिसमें अपवाद को नियंत्रित किया जाता है।
आखिरकार अपवादों को सेट करने के लिए अंत में ब्लॉक का उपयोग करें कि कोई अपवाद हुआ है या नहीं।
फेंकना एक समस्या की घटना के बाद एक अपवाद फेंक दिया जाता है। यह थ्रो कीवर्ड का काम है।

सिंटेक्स ऑफ़ ट्राई / कैच

नीचे दिए गए वाक्यविन्यास को आज़माएं / कैच करें:

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

आज़माएं / कैच करें ब्लॉक को उस कोड को घेरना चाहिए जो अपवाद उठा सकता है। इस कोड को एक संरक्षित कोड के रूप में जाना जाता है। जब आप विभिन्न प्रकार के अपवादों को पकड़ने की आवश्यकता होती है, तो आप कई कैच स्टेटमेंट का उपयोग कर सकते हैं।

उदाहरण अपवादों को संभालने के लिए

ट्राई / कैच स्टेटमेंट के साथ, आप अपने साधारण प्रोग्राम कोड को एरर-हैंडलिंग सिस्टम से अलग कर सकते हैं। आइए हम प्रदर्शित करें कि कैसे आज़माएं, कैच करें और अंत में कीवर्ड का उपयोग करके एक अपवाद को कैसे संभालें।

चरण 1) एक नया कंसोल एप्लिकेशन बनाएं।

चरण 2) इस कोड का उपयोग करें:

Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module

चरण 3) कोड निष्पादित करने के लिए टूलबार से स्टार्ट बटन पर क्लिक करें। आपको निम्न आउटपुट प्राप्त करने चाहिए:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड की व्याख्या:

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

उपयोगकर्ता-परिभाषित अपवाद

VB.NET आपको अपने स्वयं के अपवादों को परिभाषित करने की अनुमति देता है। आप ApplicationException वर्ग से उपयोगकर्ता-परिभाषित अपवाद कक्षाएं प्राप्त कर सकते हैं। आइए इसे एक उदाहरण द्वारा प्रदर्शित करें:

चरण 1) एक नया कंसोल एप्लिकेशन बनाएं।

चरण 2) निम्नलिखित कोड का उपयोग करें:

Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module

चरण 3) कोड को निष्पादित करने के लिए शीर्ष पट्टी से प्रारंभ बटन पर क्लिक करें। आपको निम्न आउटपुट प्राप्त करने चाहिए:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड की व्याख्या:

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

वस्तुओं को फेंकना

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

चरण 1) एक नया कंसोल एप्लिकेशन बनाएं।

चरण 2) निम्नलिखित कोड का उपयोग करें:

Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module

चरण 3) कोड को निष्पादित करने के लिए शीर्ष पट्टी से प्रारंभ बटन पर क्लिक करें। आपको निम्नलिखित मिलना चाहिए:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड की व्याख्या:

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

सारांश

  • एक अपवाद एक समस्या को संदर्भित करता है जो एक अप्रत्याशित परिस्थिति द्वारा लाया गया कार्यक्रम निष्पादन के दौरान उत्पन्न होता है।
  • यदि आपको संदेह है कि कुछ कोड एक अपवाद उत्पन्न करेंगे, तो इसे आज़माएं / कैच करें।
  • अंत में ब्लॉक ट्राई / कैच ब्लॉक के बाद आता है और निष्पादित करता है कि कोई अपवाद पकड़ा गया है या नहीं।
  • VB.NET हमें कस्टम अपवाद बनाने की अनुमति देता है।