خطاهای 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 بی درنگ به شما اجازه می دهد اگر یک خطا در بلوک امتحان رخ دهد یک بلوک از کد را اجرا کنید.

try {
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 "Too big"; // throw a text
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:

<input id="demo" type="number" min="5" max="10" step="1"

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

دستور finally

در دستور finally به شما اجازه می دهد که کد را پس از try و catch بدون توجه به نتیجه اجرا کنید.

try {
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
}

مثال:

دستور finally
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 معرفی کرد.

نام خطا
شرح
EvalError
یک خطا در تابع eval () رخ داده است
RangeError
یک عدد"خارج از محدوده" رخ داده است
ReferenceError
مرجع غیرقانونی رخ داده است
SyntaxError
یک خطای نحوی رخ داده است
TypeError
خطای نوع رخ داده است
URIError
یک خطا در encodeURI () اتفاق افتاده است

شش مقادیر مختلف در زیر شرح داده شده است.

خطای 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 برداشته می شود.

خطای syntax
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 استفاده کنید، خطا دریافت می شود:

خطای 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

از این ویژگی ها در وب سایت های عمومی استفاده نکنید. آنها در همه مرورگرها کار نخواهند کرد.

نظر شما

لطفا نام و نام خانوادگی خود را وارد کنید
لطفا ایمیل خود را وارد کنید لطفا ایمیل صحیح وارد کنید.
لطفا متن نظر خود را وارد کنید
>

یادگیری JavaScript

مقالات و دروس

به خبرنامه مدرسه طراحی وب ایران (وب مهراز) بپیوندید.

لطفا شماره همراه صحیح وارد کنید.
لطفا ایمیل صحیح وارد کنید.

مقالات مرتبط