مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

آموزش کامل هندل کردن خطاها و استثناها در جاوا اسکریپت


هندل کردن خطاها و استثناها

سه نوع خطا در برنامه نویسی وجود دارد: (a) خطاهای syntax ، (b) خطاهای runtime و (c) خطاهای منطقی (logical) .

خطاهای Syntax

خطاهای syntax (قاعده نوشتاری) ، به عنوان خطاهای parsing (تجزیه) نیز شناخته می شوند ، که در زمان کامپایل (compile) در زبان های برنامه نویسی سنتی و در زمان تفسیر (interpret) در جاوا اسکریپت رخ می دهند.

به عنوان مثال ، خط زیر یک خطای syntax ایجاد می کند ؛ زیرا پرانتز بسته را ندارد.

<script type="text/javascript">
   <!--
      window.print(;
   //-->
</script>

هنگامی که یک خطای syntax در جاوا اسکریپت اتفاق می افتد ، فقط کد موجود در همان نخ (thread) به عنوان خطای syntax تحت تاثیر قرار می گیرد و مابقی کدها در نخ های دیگر اجرا می شوند و فرض بر این است که هیچ چیزی در آن نخ ها ، وابستگی به کد حاوی خطا ندارد.

خطاهای Runtime

خطاهای Runtime ، که استثناها نیز نامیده می شوند ، در حین اجرا (پس از کامپایل / تفسیر) رخ می دهند.

به عنوان مثال ، خط زیر موجب بروز یک خطای runtime می شود ، زیرا ، در اینجا syntax (قاعده نوشتاری) درست است ، اما در زمان اجرا ، در حال تلاش برای فراخوانی یک متدی است که وجود ندارد.

<script type="text/javascript">
   <!--
      window.printme();
   //-->
</script>

استثناها نیز بر روی نخی که در آن رخ می دهند ، تأثیر می گذارند ، به دیگر نخ های جاوا اسکریپت اجازه می دهند تا اجرای نرمال روند خود را دنبال کنند.

خطاهای منطقی

خطاهای منطقی می توانند سخت ترین نوع خطاها برای ردیابی باشند. این خطاها ، نتیجه یک خطای syntax یا runtime نیستند. در عوض ، آنها زمانی رخ می دهند که ما اشتباهی را در منطقی که اسکریپت ما را اداره می کند ، مرتکب شویم و موجب می شوند که نتیجه ای را که انتظار داریم ، دریافت ننماییم.

ما نمی توانیم متوجه این نوع خطاها شویم ، زیرا به شرایط کسب و کار ما بستگی دارند که چه نوع منطقی می خواهیم در برنامه خود اعمال نماییم.

دستور try…catch…finally

به آخرین نسخه های جاوا اسکریپت ، قابلیت های هندل کردن استثناها اضافه شده است. جاوا اسکریپت ، ساختار try…catch…finally و هم چنین اپراتور throw را برای هندل کردن استثناها اجرا می نماید.

با این ساختار ، ما می توانیم استثنائات تولید شده توسط برنامه نویس و خطاهای runtime را متوجه شویم ، اما نمی توانیم خطاهای syntax جاوا اسکریپت را خطایابی کنیم.

در اینجا قاعده نوشتاری بلوک try…catch…finally آورده شده است:

<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>

بلوک try باید دقیقا توسط یک بلوک catch یا یک بلوک finally (یا یکی از هر دو) دنبال شود. وقتی که یک استثناء در بلوک try رخ می دهد ، استثنا در قسمت e قرار می گیرد و بلوک catch اجرا می شود. بلوک اختیاری finally پس از try/catch بدون شرط اجرا می شود.

مثال ها

در اینجا یک مثال می خواهیم ارائه دهیم که در آن ما سعی می کنیم که یک تابع غیر موجود را فراخوانی کنیم که به نوبه خود باعث بروز یک استثناء می شود. بیایید ببینیم که این مثال ، بدون ساختار 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>

خروجی

با کلیک کردن بر روی کلید Chick Me خروجی زیر حاصل می شود:

اکنون ، بیایید این استثناء را با استفاده از ساختار 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>

خروجی

با کلیک کردن بر روی کلید Chick Me خروجی زیر حاصل می شود:

 

ما می توانیم از بلوک finally استفاده کنیم که همیشه بعد از بلوک های 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 );
               }
               
               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>

خروجی

با کلیک کردن بر روی کلید Chick Me خروجی زیر حاصل می شود:

 

دستور throw

ما می توانیم دستور throw را برای ایجاد استثناء های داخلی موردنظر خود یا استثناء های سفارشی استفاده کنیم. در طول برنامه ، می توانیم این استثناء ها را گرفته و اقدام مناسب را برای آنها اعمال کنیم.

مثال

مثال زیر نشان می دهد که چگونه از یک دستور throw استفاده کنیم.

<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>

خروجی

با کلیک کردن بر روی کلید Chick Me خروجی زیر حاصل می شود:

 

 

ما می توانیم یک استثناء را در یک تابع با استفاده از یک رشته ، یک عدد صحیح ، یک مقدار بولین یا یک شیء ایجاد کنیم و سپس می توانیم این استثناء را در همان تابعی که در آن اعمال کرده ایم ، یا در یک تابع دیگر با استفاده از بلوک try ... catch در اختیار بگیریم.

متد ()onerror

هندلر رویداد onerror ، اولین ویژگی برای تسهیل نمودن هندل خطاها در جاوا اسکریپت بود. رویداد error هر زمان که یک استثناء در صفحه رخ می دهد ، بر روی شیء window اجرا می شود.

<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>

خروجی

با کلیک کردن بر روی کلید Chick Me خروجی زیر حاصل می شود:

 

هندلر رویداد onerror سه قطعه اطلاعات را برای شناسایی ماهیت دقیق خطا فراهم می کند :

  • پیام خطا : همان پیامی که مرورگر برای خطای مربوطه ، نمایش می دهد.
  • 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>

خروجی

با کلیک کردن بر روی کلید Chick Me خروجی زیر حاصل می شود:

با کلیک کردن بر روی کلید OK خروجی زیر حاصل می شود:

با کلیک کردن بر روی کلید OK خروجی زیر حاصل می شود:

می توانیم اطلاعات استخراج شده را به هر نحوی که فکر می کنیم بهتر است ، نمایش دهیم.

می توانیم از متد onerror ، همان طور که در کد زیر نشان داده شده است ، برای نمایش یک پیام خطا در صورت بروز هر گونه مشکل در بارگذاری یک تصویر استفاده کنیم.

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

می توانیم متد onerror را با بسیاری از تگ های HTML برای نمایش پیام های مناسب در صورت بروز خطا ، استفاده کنیم.

فصلِ: 1 , تعداد قسمت ها: 4 , سطح: صفر تا صد

این فصل در یک نگاه:

در این مجموعه به آموزش کامل ckeditor از نصب آن تا شخصی سازی و افزودن امکانات اختصاصی به ان می پردازیم.…

با توجه به اینکه آموزش جامع و کاملی در مورد نحوه ایجاد و شخصی سازی یک ادیتور در وب سایت و صفحات وب، وجود نداشت برآن شدیم تا یک سری مجموعه آموزشی کامل و جامع در رابطه با این موضوع تهیه نماییم…
فصلِ: 1 , تعداد قسمت ها: 16 , سطح: صفر تا صد

این فصل در یک نگاه:

نود جی اس چیست؟-اموزش نصب نود جی اس-کار با فایل در نود جی اس-کار با پکیج http در نود جی اس-اموزش کار با npm manager -امو…

توضیحات کلی مجموعه: آموزش صفر تا صد برنامه نویسی nodejs(سورس کدها به همراه اموزش قسمت اخر می باشد) دراین دوره از ابتدا تا سطح حرفه ای نود جی اس رو به کاربران عزیز کلیک سایت اموزش میدیم تا …
فصلِ: 3 , تعداد قسمت ها: 76 , سطح: مقدماتی

این فصل در یک نگاه:

در این فصل پروژه ای را انجام خواهی داد که مباحث قبلی را تثبیت کنیمهم چنین مباحث جدید را یاد خواهیک گرفت از جمله:برنامه ر…

با سلام به حرفه ای ترین دوره ی js خوش آمدید این دوره با دو هدف طراحی و ضبط شده است 1-برای افرادی که قصد یادگیری حرفه ای js را دارند(به زودی قسمت های جدید برای این افراد اضافه خواهد شد) 2…
فصلِ: 2 , تعداد قسمت ها: 102 , سطح: صفر تا صد

این فصل در یک نگاه:

معرفی سنسور ها و قطعات خروجی…

توضیحات کلی مجموعه: ... با سلام خدمت شما کلیک سایتی های عزیز با جذاب ترین و کامل ترین دوره آموزش الکترونیک در خدمت شما هستیم. گاهی اوغات ایده ها یا اختراعی در حوزه الکترونیک به ذهن شما میرس…
فصلِ: 7 , تعداد قسمت ها: 401 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل به بروزرسانی های جاوااسکریپت پرداخته می شود…

توجه: این دوره دائما توسط مهندس روشنایی (مدرس دوره) بروز گردیده و مطابق با آخرین استانداردهای برنامه نویسی آپدیت می شود. توجه فرمائید دریافت آپدیت ها برای خریداران قبلی رایگان می باشد و نیاز…
فصلِ: 3 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل سوم…

آموزش طراحی ریسپانسیو مدرن و جذابتر نسبت به بوتسرپ (همراه با ساخت صفحه اصلی و پنل یک آژانس مسافربری) آموزش پروژه محور فریمورک متریالایز برای اولین بار بین وب سایت های آموزشی آموزش تمامی …
فصلِ: 5 , تعداد قسمت ها: 77 , سطح: متوسط

این فصل در یک نگاه:

ساخت منوی مدیریت سایت،ایجاد بخش دسته بندی ها ، جدول نمایش دسته ها و ایجاد دسته جدید،ایجاد بخش ویژگی های یک دسته،ایجاد وی…

این مجموعه با تلفیقی از فریمورک bootstrap  و کد های html و css  ارائه گردیده و پیش نیاز این آموزش ، دوره دیجی کالای آقای مهندس بلاغی است چون این پروژه در قالب mvc پیاده گردیده و با توجه به ا…
فصلِ: 4 , تعداد قسمت ها: 78 , سطح: متوسط

این فصل در یک نگاه:

در این دوره آموزشی، وبسایت ورزش3 را با استفاده از ASP.NET Core پیاده سازی می کنیم و همچنین اپ اندروید آن را هم با Xamarin متصل به سرور سایت طراحی و در نهایت نحوه انتشار آن در مارکت هایی مثل …
فصلِ: 9 , تعداد قسمت ها: 215 , سطح: صفر تا صد

این فصل در یک نگاه:

در اصل فصل در مورد performance صحبت خواهیم کرد :-React Performance-Lazy-Error Boundaries و سایت را بر روی هاست واقعی قرا…

با سلام خدمت کلیک سایتی های عزیز، به دوره ی صفر تا صد طراحی سایت با react js خوش آمدید. نکته:این دوره کاملا پروژه محور میباشد نکته:این دوره هیچ پیش نیازی ندارد ReactJS  چیست؟ ReactJS اس…
فصلِ: 11 , تعداد قسمت ها: 162 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل(فصل یازدهم مجموعه)،به طراحی CMS (سیستم مدیریت محتوا)اختصاصی فروشگاه می پردازیم.هدف از طراحی این بخش،آنست که م…

در این مجموعه آموزشی قصد داریم از صفر تا صد طراحی یک فروشگاه اینترنتی رو به صورت کامل آموزش بدهیم.این فروشگاه شامل تمامی بخش های مورد نیاز یک فروشگاه اینترنتی است. هدف از این مجموعه،آموزش…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…
فصلِ: 5 , تعداد قسمت ها: 201 , سطح: صفر تا صد

این فصل در یک نگاه:

ایجاد پروژه آژانس مسافرتی.....…

فصل اول: آشنایی با مبانی برنامه نویسی اندروید   آشنایی با معماری برنامه های اندرویدی ساخت شبیه ساز جهت تست پروژه اندروید آشنایی با دستور Toast و حلقه for در برنامه های اندروی…
فصلِ: 1 , تعداد قسمت ها: 2 , سطح: متوسط

این فصل در یک نگاه:

بهترین و پر بازده ترین روش تبدیل بازدیدکننده سایت به مشتری تبلیغات هدفمند و برند سازی هوشمندانه با ایمیل می باشد. ایمیل…

  وبینار(سمینار آنلاین) آموزش تکنیک های ایمیل مارکتینگ   اگر تا انتها این متن را مطالعه کنید نظر شما در مورد ایمیل مارکتینگ 180 درجه عوض می شود!! بر هیچکس پوشیده نیست که از سال 1972 که ای…
فصلِ: 4 , تعداد قسمت ها: 368 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث تکمیلی فریم ورک لاراول…

فصل اول :آموزش مقدماتی فریم ورک لاراول معرفی فریم ورک لاراول و پیشنیازهای انجام کار انجام کانفیگ های اولیه برای نصب و راه اندازی فریم ورک معرفی روش های نصب پروژه لاراولی از طریق سایت گی…
فصلِ: 1 , تعداد قسمت ها: 155 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث مقدماتی فریم ورک react.js…

توضیحات کلی مجموعه: فصل اول : آشنایی با مباحث مقدماتی فریم ورک react.js نصب و راه اندازی node.js  و کلیه پیش نیازهای لازم نصب فریم ورک react روی لوکال و انجام تست های لازم آغاز آشنایی …
فصلِ: 1 , تعداد قسمت ها: 15 , سطح: متوسط

این فصل در یک نگاه:

رشد و درآمدزایی یک وب سایت یا کسب و کار اینترنتی کاملا به ذوق و مهارت وب مستر یا همان مدیر اصلی وب سایت گره خورده و متاس…

 اصول مدیریت وب سایت برای وب مستر شدن برای موفقیت یک وب سایت لازم الاجراست. زیرا شما دوست دارید وب سایت خود را به کارخانه پولسازی تبدیل کنید. این واقعیت رویا نیست. هرکس این اصول را بداند به …

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید