try catch در جاوااسکریپت
تا حالا براتون پیش اومده که یه برنامه با جاوااسکریپت بنویسید و اجراش کنید بعدش از یه جایی به بعد برنامتون دیگه کار نکنه، دلیلش هم ارور تو یکی از بخشها باشه؟ اگه پیش اومده که همراهمون باشید تا حلش کنیم، اگه هم پیش نیومده برید یه کاری کنید که برنامتون ارور بده ببینید چ شکلیه بعدش همراه ما باشید 🙂 چون زودتر از چیزی که فکرشو کنید حل کردن این موضوع لازمتون میشه.
اول از همه یکی از مواردی که باعث میشه توی جاوااسکریپت به ارور بربخوریم رو با هم بررسی کنیم. مثال زیر رو نگاه کنید :
window.onload = function() { test_error(); }; function test_error() { console.lo('error'); }
اگه این دستور رو اجرا کنید میبینید که توی console ارور Uncaught TypeError: console.lo is not a function چاپ میشه. چون اسم تابع log رو اشتباه نوشتیم و جاوااسکریپت نمیتونه تشخیص بده چیه. تا اینجای کار فقط ارور گرفتیم و مشکلی برامون پیش نیومده، مشکل جاییه که بخوایم یه کدی رو بعد از این ارور اجرا کنیم. مثال زیر رو نگاه کنید :
window.onload = function() { test_error(); }; function test_error() { console.lo('error'); console.log('not error'); }
یه خط دیگه به کدمون اضافه کردیم، با وجود اینکه درست نوشتیمش ولی اجرا نمیشه چون قبلش برنامه ارور داده. حالا چیکار کنیم که این مشکل پیش نیاد؟ اینجاس که try catch به کارمون میاد. عملکرد try catch به این صورته که اول از همه یه تیکه کد رو سعی میکنه اجرا کنه، اگه همه چیز درست بود که هیچچی ولی اگه مشکلی پیش اومد اجرای اون بخش رو نادیده میگیره و نمیذاره این اشکال مانع اجرای بقیه برنامه بشه. کد زیر رو ببینید :
window.onload = function() { try { test_error(); } catch (err) { console.log(err); } }; function test_error() { console.lo('error'); console.log('not error'); }
تابع test_error رو توی try catch گذاشتیم، حالا اگه اون قسمت از کد ما اشکالی داشته باشه وارد قسمت catch میشیم و اون قسمت رو اجرا میکنیم. همون متن ارور رو توی console میبینیم ولی بدون رنگ قرمز که به این معنیه که فقط متن نمایش پیدا کرده و بعنوان ارور تلقی نمیشه و این یعنی اینکه بقیه کدهامون میتونن اجرا بشن. به طور کلی قسمت اصلی کد ما توی try قرار داره و قسمت جایگزین در catch.
کد زیر رو اجرا کنید تا قسمت بعدی که دستور throw هست رو با هم بررسی کنیم.
window.onload = function() { show(); }; function show() { var i = prompt("Please write a number between 1 to 100"); try { if (i < 1) { throw "number is too low"; } else if (i > 100) { throw "number is too high"; } else { console.log('your number is : ' + i); } } catch (err) { console.log(err); show(); } }
با تابع prompt از کاربر ورودی دریافت میکنیم و چک میکنیم اگر این مقدار از ۱ کمتر بود و یا از ۱۰۰ بیشتر بود پیام مناسب را تولید کنیم. با استفاده از آرگومانی که catch دریافت میکنه میتونیم اون پیامو نمایش بدیم (مثل همون اروری که تو مثال قبل نمایش دادیم).
در آخر، دستور finally رو داریم که بعد از try catch بدون توجه به نتیجه اجرا میشه. یعنی چه وارد try شویم و چه وارد catch شویم این قطعه کد اجرا میشود. مثال زیر همون مثال بالا به همراه finally هست.
window.onload = function() { show(); }; function show() { var i = prompt("Please write a number between 1 to 100"); try { if (i < 1) { throw "number is too low"; } else if (i > 100) { throw "number is too high"; } else { console.log('your number is : ' + i); } } catch (err) { console.log(err); show(); } finally { console.log('end'); } }
بعد از هربار پر کردن ورودی، end در console نمایش پیدا میکند.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.