خطاهای JavaScript
یادگیری JavaScriptدستور try به شما امکان می دهد یک کدی از خطا را آزمایش کنید.
دستور catch به شما اجازه می دهد خطا را مدیریت کنید.
دستور throw به شما اجازه می دهد خطاهای سفارشی ایجاد کنید.
در نهایت دستور finally به شما اجازه می دهد کد را پس از try و catch، صرف نظر از نتیجه اجرا کنید.
خطاها اتفاق خواهند افتاد!
هنگام اجرای کد جاوا اسکریپت ممکن است خطاهای مختلف رخ دهد.
خطاها می توانند خطاهای برنامه نویسی شده توسط برنامه نویسان، اشتباهات مربوط به ورود اشتباه و سایر موارد غیر قابل پیش بینی باشد.
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
مشاهده مثالجاوا اسکریپت adddlert را به عنوان یک خطا جذب می کند و کد گرفته را برای اجرای آن اجرا می کند.
try و catch در JavaScript
بیانیه try شما را به تعریف یک بلوک از کد برای خطا در حالی که آن را اجرا می شود را اجازه می دهد.
بیانیه catch بی درنگ به شما اجازه می دهد اگر یک خطا در بلوک امتحان رخ دهد یک بلوک از کد را اجرا کنید.
Block of code to try
}
catch(err) {
Block of code to handle errors
}
خطاهای Throws در JavaScript
وقتی یک خطا رخ می دهد، جاوا اسکریپت به طور معمول متوقف می شود و یک پیام خطا ایجاد می کند.
اصطلاح فنی برای این عبارت است: JavaScript will throw an exception (throw an error).
جاوااسکریپت یک شی Error با دو ویژگی: نام و پیام ایجاد خواهد کرد.
دستور throw
دستور throw اجازه می دهد تا یک خطای سفارشی ایجاد کنید.
اصطلاح فنی برای این عبارت است: throw an exception (throw an error).
به استثنا می تواند یک رشته جاوا اسکریپت، یک شماره، یک بولین یا یک شیء باشد:
throw 500; // throw a number
اگر از throw با try و catch استفاده کنید، می توانید جریان برنامه را کنترل کرده و پیام های خطای سفارشی ایجاد کنید.
مثال اعتبار ورودی
این مثال ورودی را بررسی می کند. اگر مقدار اشتباه باشد، یک استثنا (اشتباه) throw می شود.
<!DOCTYPE html>
<html>
<body>
<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="p01"></p>
<script>
function myFunction() {
var message, x;
message = document.getElementById("p01");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "empty";
if(isNaN(x)) throw "not a number";
x = Number(x);
if(x < 5) throw "too low";
if(x > 10) throw "too high";
}
catch(err) {
message.innerHTML = "Input is " + err;
}
}
</script>
</body>
</html>
مشاهده مثالاعتبازسنجی HTML
کد بالا فقط یک نمونه است.
مرورگرهای مدرن اغلب ترکیبی از جاوا اسکریپت و اعتبار سنجی ساخته شده در HTML استفاده می کنند، با استفاده از قوانین اعتبار پیش تعیین شده تعریف شده در ویژگی های HTML:
شما می توانید در مورد اعتبار سنجی فرم در فصل بعد این آموزش بیشتر بخوانید.
دستور finally
در دستور finally به شما اجازه می دهد که کد را پس از try و catch بدون توجه به نتیجه اجرا کنید.
Block of code to try
}
catch(err) {
Block of code to handle errors
}
finally {
Block of code to be executed regardless of the try / catch result
}
مثال:
function myFunction() {
var message, x;
message = document.getElementById("p01");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "is empty";
if(isNaN(x)) throw "is not a number";
x = Number(x);
if(x > 10) throw "is too high";
if(x < 5) throw "is too low";
}
catch(err) {
message.innerHTML = "Error: " + err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
مشاهده مثالشی Erorr
جاوا اسکریپت دارای یک شیء خطای ساخته شده است که وقتی خطایی رخ می دهد اطلاعات خطایی را فراهم می کند.
شیء خطا دارای دو ویژگی مفید است: نام و پیام.
خصوصیات شی خطا
خطا در نام مقادیر
شش مقادیر مختلف را می توان با خصوصیات name معرفی کرد.
شش مقادیر مختلف در زیر شرح داده شده است.
خطای Eval
EvalError خطایی در تابع eval () نشان می دهد.
نسخه های جدیدتر از جاوا اسکریپت هیچ EvalError را اجرا نمی کنند. به جای آن از SyntaxError استفاده کنید.
خطای محدوده
RangeError اگر شما از یک شماره خارج از دامنه مقادیر قانونی استفاده کنید، خطا دریافت می شود.
به عنوان مثال: شما نمی توانید تعداد رقم های قابل توجهی از یک عدد را به 500 تنظیم کنید.
var num = 1;
try {
num.toPrecision(500); // A number cannot have 500 significant digits
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
مشاهده مثالخطای مرجع
یک ReferenceError پرتاب می شود اگر از مرجع یک متغیر که اعلام نشده است استفاده کنید:
var x;
try {
x = y + 1; // y cannot be referenced (used)
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
مشاهده مثالخطای Syntax
اگر شما سعی می کنید کد را با یک خطای نحوی ارزیابی کنید، یک SyntaxError برداشته می شود.
try {
eval("alert('Hello)"); // Missing ' will produce an error
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
مشاهده مثالخطای نوع
یک TypeError پر می شود اگر از یک مقدار خارج از محدوده انواع مورد انتظار استفاده شود:
var num = 1;
try {
num.toUpperCase(); // You cannot convert a number to upper case
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
مشاهده مثالخطای URI
یک URIError اگر شما از کاراکترهای غیرقانونی در یک تابع URI استفاده کنید، خطا دریافت می شود:
try {
decodeURI("%%%"); // You cannot URI decode these percent signs
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
مشاهده مثالویژگی های غیر استاندارد Error Object
موزیلا و مایکروسافت برخی ویژگی های شیء خطای غیر استاندارد را تعریف می کنند:
fileName (Mozilla)
lineNumber (Mozilla)
columnNumber (Mozilla)
stack (Mozilla)
description (Microsoft)
number (Microsoft
از این ویژگی ها در وب سایت های عمومی استفاده نکنید. آنها در همه مرورگرها کار نخواهند کرد.
نظر شما
>