این آموزش در تاریخ ۱۴۰۱/۱۰/۲۴ آپدیت شده است.
آموزش مدیریت خطاها در جاوا اسکریپت
سلام خدمت تمامی دوستان و همراهان محترم سایت آموزشی فری لرن ، امیدوارم که حال همگیتون خوب باشه. لطفا در ادامه با آموزش مدیریت خطاها در جاوا اسکریپت با من همراه باشید.
Free-Learn
آنچه در این جلسه میخوانید :
- 1 مدیریت خطاها در جاوا اسکریپت
- 2 اجرای یک کد در حالت عادی
- 3 نحوه استفاده و مدیریت خطاها در جاوا اسکریپت
- 4 حالت های استفاده از دستور Try و Catch و Finally
- 5 پارامتر موجود در دستور catch
- 6 ویژگی های شئ خطا در دستور catch
- 7 خطای SyntaxError
- 8 خطای RangeError
- 9 خطای ReferenceError
- 10 خطای TypeError
- 11 خطای URIError
- 12 تعریف خطاهای سفارشی با استفاده از throw
- 13 مثال های مختلف از مدیریت خطاها در جاوااسکریپت
مدیریت خطاها در جاوا اسکریپت
مدیریت خطاها ( یا به انگلیسی Handle کردن یا هندل کردن یا به دست گرفتن ) با استفاده از اون میتونیم خطاهای موجود در برنامه هامون رو مدیریت کنیم.
خب همونطور که خودتونم میدونید، بصورت پیش فرض اگه خطایی چیزی در برنامه مون وجود داشته باشه ، اون خطا بهمون نشون داده نمیشه. ( یعنی عملا ما نمیدونیم کجای برنامه خطا داره )
به همین خاطر ما میتونیم با بدست گرفتن ( Handle کردن ) خطاها ، خطاهامون رو کنترل کنیم و پیغام های مناسب به نسبت اون خطا در خروجی به نمایش درآوریم.
اینجوری دیگه حداقلش اگه برنامه مون خطا داشت، بهمون میگه خطای برنامه چیه ( که میتونیم در خروجی نام خطا و پیغام خطارو به نمایش بگذاریم ).
Free-Learn
اجرای یک کد در حالت عادی
خب گفتم در حالت عادی و پیش فرض اگه برنامه مون خطا داشته باشه ، هیچ چیزی به ما نشون نمیده که متوجه شیم مثلا در فلان جا فلان مشکل رو داریم.
مثال شماره ۱ : گفتیم در صفحه متغیر MySite رو چاپ کن، ولی خب هیچ چیزی در خروجی چاپ نمیشه، چون اصلا متغیر MySite تعریف نشده ، ولی خب بازم هیچ خطایی مبنی بر تعریف نشدن متغیر بهمون نمیده.
1 2 3 4 5 |
<script> document.write( MySite ); </script> |
Free-Learn
نحوه استفاده و مدیریت خطاها در جاوا اسکریپت
در زبان جاوااسکریپت با استفاده از چندین دستور به شرح زیر میتونیم خطاهارو مدیریت کنیم :
- Try : سعی میکنه کدهارو اجرا کنه
- Catch : اگه کدها خطا داشت اینجا مدیریت میشن
- Finally : در نهایت بدون توجه به نتیجه خطاها، کدهارو اجرا میکنه
مثال :
1 2 3 4 5 6 7 8 9 |
try { یه کد که باید اجرا بشه } catch ( error ) { اگه کدمون خطا داشت، اینجا مدیریت میشن } finally { در نهایت بدون توجه به نتیجه خطاها، کدهایی که اینجا هستن اجرا میشن } |
Free-Learn
حالت های استفاده از دستور Try و Catch و Finally
ما میتونیم از این ۳ دستور در حالت های مختلف استفاده کنیم، ولی خب یادتون باشه که همیشه باید از دستور try استفاده کرد، پس حالت های استفاده از این ۳ دستور به شرح زیر می باشند :
حالت اول : استفاده فقط از try و catch
1 2 3 4 5 6 |
try { // تلاش برای اجرای کدها } catch(error) { // مدیریت خطاها } |
حالت دوم : استفاده فقط از try و finally
1 2 3 4 5 6 |
try { // تلاش برای اجرای کدها } finally { // در نهایت کدهایی که باید اجرا بشن } |
حالت سوم : استفاده از try و catch و finally
1 2 3 4 5 6 7 8 9 |
try { // تلاش برای اجرای کدها } catch(error) { // مدیریت خطاها } finally { // در نهایت کدهایی که باید اجرا بشن } |
Free-Learn
پارامتر موجود در دستور catch
اگه توجه کرده باشید یه پارامتر درون دستور catch وجود داره، که بهش میگن شئ خطا ( یا Error Object ) ما با استفاده از این پارامتر میتونیم نام خطا ( name ) و پیغام خطا ( message ) رو بگیریم و در خروجی نمایش بدیم.
- name : برای ست کردن یا گرفتن نام خطا
- message : برای ست کردن یا گرفتن متن پیغام خطا
مثال :
1 2 3 4 5 6 7 8 |
try { // تلاش برای اجرای کدها } catch(MyError) { // مدیریت خطاها MyError.name; // گرفتن نام خطا MyError.message; // گرفتن متن پیغام خطا } |
اون کلمه MyError که داخل پرانتز هستش میشه همون پارامتر که گفتم، این یک متغیر با نام دلخواه هست ( یعنی هر اسمی دوس داشتید میتونید براش مشخص کنید )
Free-Learn
ویژگی های شئ خطا در دستور catch
خب همونطور که گفتم یه شئ یا یه پارامتر داخل دستور catch وجود داره که با استفاده از اون میتونیم نام و پیغام خطارو بدست آوریم.
نام خطاها | توضیح |
---|---|
SyntaxError | خطا مربوط به نحوه نوشتاری یک کد |
RangeError | وقتی یک چیزی از یک محدوده خاصی بیشتر باشه |
ReferenceError | خطا مربوط به متغیر تعریف نشده |
TypeError | خطا مربوط به نوع داده ای نامعتبر |
URIError | خطا مربوط به کاراکترهای نامعتبر در URL ها |
Free-Learn
خطای SyntaxError
این خطا موقعی رخ میده که از نظر نوشتاری یا سینتکس مشکلی درون یک کد وجود داشته باشه.
1 2 3 4 5 6 7 8 9 10 |
<script> try { eval("alert('Hello)"); } catch(MyError) { document.getElementById("Result").innerHTML = MyError.name; } </script> |
خطای RangeError
این خطا موقعی رخ میده که نتیجه یک عملیات خارج از محدوده قانونی زبان جاوا اسکریپت باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<script> var MyNumber = 5.3444; try{ var Result = MyNumber.toPrecision(500); document.getElementById("Result").innerHTML = Result; } catch(MyError){ document.getElementById("Result").innerHTML = MyError.name; } </script> |
خطای ReferenceError
این خطا موقعی رخ میده که ما سعی داریم از متغیری استفاده کنیم که اصلا در برنامه تعریف نشده.
1 2 3 4 5 6 7 8 9 10 |
<script> try{ document.write(MySite); } catch(MyError){ document.getElementById("Result").innerHTML = MyError.name; } </script> |
خطای TypeError
این خطا موقعی رخ میده که یه متغیر خارج از محدوده نوع داده ای جاوااسکریپت باشه. بفرض مثال ما بخوایم یک عدد رو به حروف بزرگ انگلیسی تبدیل کنیم ( خب عدده دیگه، مگه میشه به حروف بزرگ انگلیسی تبدیلش کرد )
1 2 3 4 5 6 7 8 9 10 11 12 |
<script> var MyNumber = 10; try { MyNumber.toUpperCase(); } catch(MyError){ document.getElementById("Result").innerHTML = MyError.name; } </script> |
خطای URIError
این خطا که مخفف Uniform Resource Identifier می باشد، موقعی رخ میده که سعی داریم از کاراکترهای غیرمعتبر در توابع URI مثه ()decodeURI یا ()encodeURI استفاده کنیم.
1 2 3 4 5 6 7 8 9 10 |
<script> try { decodeURI("%%%"); } catch(MyError){ document.getElementById("Result").innerHTML = MyError.name; } </script> |
Free-Learn
تعریف خطاهای سفارشی با استفاده از throw
خب در جدول بالا گفتیم یسری خطاها هستن که برنامه بهمون نشون میده، حال علاوه بر اونا میتونیم برای خودمون خطاهای سفارشی تعریف کنیم، یعنی مثلا سفارشی یه پیغام خطا مشخص کنیم که در خروجی نمایش داده بشه.
نحوه استفاده از دستور throw :
1 2 3 4 5 6 |
try { if( MyName == "" ) throw "Your Name Is Empty"; } catch( MyError ) { alert( MyError ); } |
Free-Learn
مثال های مختلف از مدیریت خطاها در جاوااسکریپت
حال در ادامه آموزش مدیریت خطاها در جاوا اسکریپت میخوایم در این قسمت مثال های مختلفی از نحوه مدیریت کردن خطاها در زبان جاوا اسکریپت رو باهمدیگه کار کنیم.
مثال شماره ۱ : استفاده عادی از try و catch
1 2 3 4 5 6 7 8 9 10 11 12 |
<script> var MySite = "Free-Learn"; try{ // برنامه هیچ خطایی نداره و متغیر مای سایت با موفقیت در خروجی چاپ میشه document.write( MySite ); }catch( MyError ){ alert( MyError ); } </script> |
مثال شماره ۲ : تعریف خطاهای سفارشی بصورت دلخواه با استفاده از دستور throw
1 2 3 4 5 6 7 8 9 |
try{ if( UserInput == "" ){ throw "بی زحمت یه نام وارد کن"; }else{ Result.innerHTML = " سلام " + UserInput + " خوبی؟ "; } }catch( MyError ){ Result.innerHTML = MyError; } |
مثال شماره ۳ : استفاده از ۳ دستور try , catch و finally
1 2 3 4 5 6 7 8 9 |
try{ if( UserInput == "" ){ throw "بی زحمت یه نام وارد کن"; } }catch( MyError ){ Result.innerHTML = MyError; }finally{ Result.innerHTML = "این از بخش finally میاد"; } |