مدیریت خطاها در JavaScript
دستور try، به شما اجازه می دهد تا، خطاهای یک بلاک از دستورات را تست کنید.
دستور catch، خطاهای اتفاق افتاده در قسمت try را بررسی می کند.
دستور throw، به شما اجازه می دهد تا خطاهای سفارشی ایجاد کنید.
دلیل اتفاقِ خطاها!
زمانی که موتور JavaScript کدها را اجرا می کند، ممکن است خطاهای زیر اتفاق بیافتد:
- خطای املای دستورات (syntax error)، که معمولاً توسط برنامه نویس اتفاق می افتد.
- خطای گم شدگی خصوصیت (missing feature)، که ممکن است بخاطر تفاوت های بین مرورگرها و یا خطای املایی باشد.
- خطای ورودی اشتباه (wrong input)، که می تواند توسط یک کاربر باشد.
و البته این خطاها می تواند چیزهای غیرقابل پیشبینی دیگری نیز باشد.
پرتاب خطا (Throw Error)
زمانی که خطایی اتفاق می افتد، به طور معمول، اجرای دستورات متوقف شده و یک پیغام خطا تولید می شود.
اصطلاح تکنیکی برای این عمل، عبارت throw است (به معنی پرتاب کردن، به اصطلاح یک پیغام خطا به سمت catch پرتاب می شود)
try و catch در JavaScript
عبارت try، به شما اجازه می دهد تا، خطاهای یک بلاک از دستورات را تست کنید.
اگر خطایی در قسمت try اتفاق بیافتد، دستورات تعریف شده در قسمت catch اجرا می شوند. (catch به معنی گرفتن، به اصطلاح خطاهای پرتاب شده از قسمت try در قسمت catch گرفته می شوند)
try و catch ها همیشه جفت جفت می آیند.
نحوه استفاده
{
//Run some code here
}
catch(err)
{
//Handle errors here
}
مثال
در مثال زیر، در قسمت try، عمداً یک خطای املایی ایجاد کرده ایم.
قسمت catch خطایی که در try اتفاق افتاده را می گیرد و پیغام مناسب را چاپ می کند:
مثال (مدیریت خطاها در JavaScript)
<html>
<head>
<script>
var txt="";
function message()
{
try
{
adddlert("Welcome guest!");
}
catch(err)
{
txt="There was an error on this page.\n\n";
txt+="Error description: " + err.message + "\n\n";
txt+="Click OK to continue.\n\n";
alert(txt);
}
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()">
</body>
</html>
دستور throw
دستور throw، به شما اجازه می دهد تا خطاهای سفارشی ایجاد کنید.
اصطلاح تکنیکی صحیح برای ایجاد خطا: عبارت "throw an exception" است.
دستور throw باید همراه try و catch استفاده شود.
نحوه استفاده
exception می تواند یک رشته، یک عدد، یک داده Boolean و یا یک Object باشد.
مثال
این مثال، مقدار ورودی متغیر را تست می کند. اگر مقدار اشتباه باشد، یک خطا (exception) به سمت catch پرتاب (throw) می شود. قسمت catch خطا را می گیرد و پیغام مناسب را چاپ می کند.
مثال (مدیریت خطاها در JavaScript)
function myFunction()
{
try
{
var x=document.getElementById("demo").value;
if(x=="") throw "empty";
if(isNaN(x)) throw "not a number";
if(x>10) throw "too high";
if(x<5) throw "too low";
}
catch(err)
{
var y=document.getElementById("mess");
y.innerHTML="Error: " + err + ".";
}
}
</script>
<h1>My First JavaScript</h1>
<p>Please input a number between 5 and 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="mess"></p>
توجه داشته باشید که در مثال بالا اگر در تابع getElementById مشکلی رخ دهد، خطای مناسب با آن پرتاب (throw) خواهد شد.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 23563
دیدگاهها
اینقد توضیح اضافه ندید.مثلا میتونستید در مورد همون console میگفتید کافی بود.مشکل شماهایی که اموزش میدید اینه که خیلی قضیه رو پیچیده میکنید .
عالی بود.
آموزش مدیریت خطاها در JavaScript عالی بود.
سلام خسته نباشید.
سایتتون خیلی عالیه.
یه سوال:
شما توی مثال هاتون خیلی از خصوصیت هایی استفاده میکنین که تا حالا توضیحشون ندادین.
مثلا value. چیه؟
یا innerhtml. چیه؟
منظورم فقط این دوتا نیست.
میخوام بگم کی قراره اینا رو توضیح بدین.
متشکرم.
سلام دوست عزیز پیش نیاز جاوااسکریپت HTML و CSS
اول اینارو باید یاد بگیری تا به مشکل بر نخوری
با عرض سلام و تشکر.
یکی از خصوصیات برنامهنویسی این هست که به جای دادن ماهی، ماهیگیری یاد بدیم.
توضیح این متدها نه تنها در اینجا، بلکه تقریبا میشه گفت در هیچ زبانی به طور کامل مرسوم نیست...
با کمی سرچ و کار کردن خودتون کامل دستتون میاد که هر متد چی کار میکنه.
مثلا value همونطور که از اسمش پیداست مقدار تگ یا المنت موردنظر رو در خودش داره و یا innerHTML در داخل اون المنت عناصر html رو قرار میده.
این رو دقت داشته باشید،که در بعضی مواقع میشه مقادیر رو خوند یا به اونها مقداری انتساب کرد.
سلام .خسته نباشید .واقعا وب سایتتون عالیه .
ببخشید منظوز از err.message در تکه کد زیر چیه؟
txt+="Error description:"+e rr.message+"\n\ n
با سلام و تشکر.
در اینجا err در واقع یک شئ هست که اطلاعات مربوط خطا را در خود نگهداری میکند. توسط خصوصیت message میتوان به متن این خطا پی برد. در واقع عبارت err.message متن خطا رو بر میگردونه.
برای اینکه بفهمیم خطایی در سایتمون رخ داده یا نه میتوان از قسمت inspector بخش کنسول به این قضیه پی برد.
بله از بخش console خطاها را می توانید مشاهده کنید...
سلام سایتتون خیلی عالیه
می خواهم وقتی رو دکمه کلیک می کنم نام دکمه عوض شود و وقتی دوباره رو آن کلیک می کنم نام به حالت اول تغییر کند اما قسمت دوم کد را نمی توانم انجام بدهم
ضمنا مثلا اگر روی دکمه ای کلیک کنم چگونه یک دکمه دیگر غیر فعال شود
function Rec(){
document.getElementById("but").value="Send";
}
برای عوض شدن نام دکمه کد زیر رو در یک ادیتور آنلاین ایجاد کردیم:
codepen.io/sbaloot/pen/Qbxexg
برای غیرفعال کردن یک دکمه ی دیگر، به آدرس زیر مراجعه نمایید:
www.w3schools.com/jsref/tryit.asp?filename=tryjsref_pushbutton_disabled2