हिन्दी में वैबसाइट डिजाइनिंग सीखना चाहते हैं तो हमारी साइट code sikho hindi को Subscribe करें

JavaScript Advanced - Errors & Exceptions Handling

 JavaScript Advanced - Errors & Exceptions Handling

JavaScript Advanced - Errors & Exceptions Handling


JavaScript Advanced


प्रोग्रामिंग में तीन प्रकार की त्रुटियां हैं: (ए) सिंटैक्स त्रुटियां, (बी) रनटाइम त्रुटियां, और (सी) तार्किक त्रुटियां।


सिंटैक्स त्रुटियाँ:-


सिंटैक्स त्रुटियां, जिन्हें पार्सिंग त्रुटियां भी कहा जाता है, पारंपरिक प्रोग्रामिंग भाषाओं में संकलन समय पर और जावास्क्रिप्ट में व्याख्या समय पर होती हैं।


उदाहरण के लिए, निम्न पंक्ति सिंटैक्स त्रुटि का कारण बनती है क्योंकि इसमें एक बंद कोष्ठक गुम है।


<script type = "text/javascript">

   <!--

      window.print(;

   //-->

</script>


जब जावास्क्रिप्ट में एक सिंटैक्स त्रुटि होती है, तो केवल उसी थ्रेड में निहित कोड होता है जिसमें सिंटैक्स त्रुटि प्रभावित होती है और अन्य थ्रेड्स में शेष कोड यह मानकर निष्पादित हो जाता है कि उनमें कुछ भी त्रुटि वाले कोड पर निर्भर नहीं करता है।


रनटाइम त्रुटियाँ:-


रनटाइम त्रुटियाँ, जिन्हें अपवाद भी कहा जाता है, निष्पादन के दौरान होती हैं (संकलन/व्याख्या के बाद)।


उदाहरण के लिए, निम्न पंक्ति रनटाइम त्रुटि का कारण बनती है क्योंकि यहां सिंटैक्स सही है, लेकिन रनटाइम पर, यह एक ऐसी विधि को कॉल करने का प्रयास कर रहा है जो मौजूद नहीं है।


<script type = "text/javascript">

   <!--

      window.printme();

   //-->

</script>


अपवाद उस थ्रेड को भी प्रभावित करते हैं जिसमें वे होते हैं, अन्य जावास्क्रिप्ट थ्रेड्स को सामान्य निष्पादन जारी रखने की अनुमति देता है।


तार्किक त्रुटियाँ:- JavaScript Advanced


लॉजिक त्रुटियां ट्रैक करने के लिए सबसे कठिन प्रकार की त्रुटियां हो सकती हैं। ये त्रुटियां सिंटैक्स या रनटाइम त्रुटि का परिणाम नहीं हैं। इसके बजाय, वे तब होते हैं जब आप उस तर्क में गलती करते हैं जो आपकी स्क्रिप्ट को संचालित करता है और आपको अपेक्षित परिणाम नहीं मिलता है।


आप उन त्रुटियों को नहीं पकड़ सकते, क्योंकि यह आपकी व्यावसायिक आवश्यकता पर निर्भर करता है कि आप अपने कार्यक्रम में किस प्रकार का तर्क रखना चाहते हैं।


The try...catch...finally Statement


जावास्क्रिप्ट के नवीनतम संस्करणों ने अपवाद प्रबंधन क्षमताओं को जोड़ा। जावास्क्रिप्ट अपवादों को संभालने के लिए try...catch... अंत में निर्माण के साथ-साथ थ्रो ऑपरेटर को लागू करता है।


आप प्रोग्रामर-जनरेटेड और रनटाइम अपवादों को पकड़ सकते हैं, लेकिन आप जावास्क्रिप्ट सिंटैक्स त्रुटियों को नहीं पकड़ सकते।


यहाँ कोशिश है...पकड़ें...आखिरकार सिंटैक्स को ब्लॉक करें -


<script type = "text/javascript">

   <!--

      try {

         // Code to run

         [break;]

      }     

      catch ( e ) {

         // Code to run if an exception occurs

         [break;]

      }

      

      [ finally {

         // Code that is always executed regardless of 

         // an exception occurring

      }]

   //-->

</script>


कोशिश ब्लॉक के बाद या तो एक कैच ब्लॉक या एक अंत में ब्लॉक (या दोनों में से एक) होना चाहिए। जब ट्राई ब्लॉक में कोई अपवाद होता है, तो अपवाद को ई में रखा जाता है और कैच ब्लॉक को निष्पादित किया जाता है। वैकल्पिक अंत में ब्लॉक कोशिश/पकड़ के बाद बिना शर्त निष्पादित करता है।


उदाहरण:- 

JavaScript Advanced


यहां एक उदाहरण दिया गया है जहां हम एक गैर-मौजूदा फ़ंक्शन को कॉल करने का प्रयास कर रहे हैं जो बदले में अपवाद उठा रहा है। आइए देखें कि यह बिना try...catch− . के कैसे व्यवहार करता है


<html>

   <head>      

      <script type = "text/javascript">

         <!--

            function myFunc() {

               var a = 100;

               alert("Value of variable a is : " + a );

            }

         //-->

      </script>      

   </head>

   

   <body>

      <p>Click the following to see the result:</p>

      

      <form>

         <input type = "button" value = "Click Me" onclick = "myFunc();" />

      </form>      

   </body>

</html>


Output:-

Value of variable a is : 100

आइए अब try...catch का उपयोग करके इस अपवाद को पकड़ने का प्रयास करें और एक उपयोगकर्ता के अनुकूल संदेश प्रदर्शित करें। यदि आप किसी उपयोगकर्ता से यह त्रुटि छिपाना चाहते हैं, तो आप इस संदेश को दबा भी सकते हैं।


<html>

   <head>

      

      <script type = "text/javascript">

         <!--

            function myFunc() {

               var a = 100;

               try {

                  alert("Value of variable a is : " + a );

               } 

               catch ( e ) {

                  alert("Error: " + e.description );

               }

            }

         //-->

      </script>

      

   </head>

   <body>

      <p>Click the following to see the result:</p>

      

      <form>

         <input type = "button" value = "Click Me" onclick = "myFunc();" />

      </form>

      

   </body>

</html>


Output:-

Value of variable a is : 100

आप अंत में ब्लॉक का उपयोग कर सकते हैं जो कोशिश/पकड़ के बाद हमेशा बिना शर्त निष्पादित करेगा। यहाँ एक उदाहरण है।


<html>

   <head>

      

      <script type = "text/javascript">

         <!--

            function myFunc() {

               var a = 100;

               

               try {

                  alert("Value of variable a is : " + a );

               }

               catch ( e ) {

                  alert("Error: " + e.description );

               }

               finally {

                  alert("Finally block will always execute!" );

               }

            }

         //-->

      </script>

      

   </head>

   <body>

      <p>Click the following to see the result:</p>

      

      <form>

         <input type = "button" value = "Click Me" onclick = "myFunc();" />

      </form>

      

   </body>

</html>


Output:-

Value of variable a is : 100

थ्रो स्टेटमेंट:- JavaScript Advanced


आप अपने अंतर्निहित अपवादों या अपने अनुकूलित अपवादों को बढ़ाने के लिए थ्रो स्टेटमेंट का उपयोग कर सकते हैं। बाद में इन अपवादों को पकड़ा जा सकता है और आप उचित कार्रवाई कर सकते हैं।


उदाहरण:-


निम्न उदाहरण दर्शाता है कि थ्रो स्टेटमेंट का उपयोग कैसे करें।


<html>

   <head>    

      <script type = "text/javascript">

         <!--

            function myFunc() {

               var a = 100;

               var b = 0;

               

               try {

                  if ( b == 0 ) {

                     throw( "Divide by zero error." ); 

                  } else {

                     var c = a / b;

                  }

               }

               catch ( e ) {

                  alert("Error: " + e );

               }

            }

         //-->

      </script>

      

   </head>

   <body>

      <p>Click the following to see the result:</p>

      

      <form>

         <input type = "button" value = "Click Me" onclick = "myFunc();" />

      </form>      

   </body>

</html>


Output:-

Error: Divide by zero error.

आप एक स्ट्रिंग, पूर्णांक, बूलियन, या किसी ऑब्जेक्ट का उपयोग करके एक फ़ंक्शन में अपवाद उठा सकते हैं और फिर आप उस अपवाद को उसी फ़ंक्शन में कैप्चर कर सकते हैं जैसा हमने ऊपर किया था, या किसी अन्य फ़ंक्शन में try...catch ब्लॉक का उपयोग करके।


The onerror() Method-आतंक () विधि


जावास्क्रिप्ट में त्रुटि प्रबंधन को सुविधाजनक बनाने के लिए ऑनरर इवेंट हैंडलर पहली विशेषता थी। जब भी पृष्ठ पर कोई अपवाद होता है तो त्रुटि घटना विंडो ऑब्जेक्ट पर सक्रिय हो जाती है।


<html>

   <head>   

      <script type = "text/javascript">

         <!--

            window.onerror = function () {

               alert("An error occurred.");

            }

         //-->

      </script>

      

   </head>

   <body>

      <p>Click the following to see the result:</p>

      

      <form>

         <input type = "button" value = "Click Me" onclick = "myFunc();" />

      </form>  

   </body>

</html>


Output:-

An error occurred.

आतंक घटना हैंडलर त्रुटि की सटीक प्रकृति की पहचान करने के लिए सूचना के तीन टुकड़े प्रदान करता है -


त्रुटि संदेश - वही संदेश जो ब्राउज़र दी गई त्रुटि के लिए प्रदर्शित करेगा


URL - वह फ़ाइल जिसमें त्रुटि हुई


लाइन नंबर- दिए गए URL में लाइन नंबर जिसके कारण त्रुटि हुई


यह जानकारी निकालने का तरीका दिखाने के लिए यहां एक उदाहरण दिया गया है।


उदाहरण:-


<html>

   <head>  

      <script type = "text/javascript">

         <!--

            window.onerror = function (msg, url, line) {

               alert("Message : " + msg );

               alert("url : " + url );

               alert("Line number : " + line );

            }

         //-->

      </script>

      

   </head>

   <body>

      <p>Click the following to see the result:</p>

      

      <form>

         <input type = "button" value = "Click Me" onclick = "myFunc();" />

      </form>     

   </body>

</html>


Output:-


आप निकाली गई जानकारी को किसी भी तरह से प्रदर्शित कर सकते हैं जो आपको लगता है कि यह बेहतर है।


छवि लोड करने में कोई समस्या होने की स्थिति में त्रुटि संदेश प्रदर्शित करने के लिए, जैसा कि नीचे दिखाया गया है, आप एक आतंक विधि का उपयोग कर सकते हैं।


<img src="myimage.gif" onerror="alert('An error occurred loading the image.')" />


त्रुटियों के मामले में उचित संदेश प्रदर्शित करने के लिए आप कई HTML टैग के साथ onerror का उपयोग कर सकते हैं।

JavaScript Advanced