خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن

از ویکی کد
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

https://www.w3schools.com/js/js_errors.asp

JavaScript Errors - Throw and Try to Catch

خطاها در جاوا اسکریپت – رخ دادن خطا و رفع خطا

The try statement lets you test a block of code for errors.

عبارت try به شما اجازه می دهد بلاکی از کد را برای خطاها بررسی کنید .

The catch statement lets you handle the error.

عبارت catch به شما اجازه می دهد که خطا را مدیریت کنید .

The throw statement lets you create custom errors.

عبارت throw به شما اجازه می دهد یک خطای شخصی سازی شده ایجاد کنید.

The finally statement lets you execute code, after try and catch, regardless of the result.

عبارت finally به شما اجازه می دهد بعد از بلاک های Try  و catch بدون در نظر گرفتن نتایج آنها ، کد خود را اجرا کنید.

Errors Will Happen!

خطاها اتفاق خواهند افتاد !

When executing JavaScript code, different errors can occur.

در زمان اجرای کد های جاوا اسکریپت ، خطاهای مختلفی می توانند رخ دهند .

Errors can be coding errors made by the programmer, errors due to wrong input, and other unforeseeable things.

خطا ها می توانند خطاهای کد باشند که توسط برنامه نویس ایجاد شده اند ، خطاهایی به خاطر ورود داده اشتباه و سایر موارد .

Example

In this example we have written alert as adddlert to deliberately produce an error:

در این مثال ، ما یک هشدار را به صورتadddlert برای ایجاد یک خطا  ، ایجاد کرده ایم:

<p id="demo"></p>


<script>

try {

  adddlert("Welcome guest!");

}

catch(err) {

  document.getElementById("demo").innerHTML = err.message;

}

</script>

JavaScript catches adddlert as an error, and executes the catch code to handle it.

جاوا اسکریپت adddlert  را به صورت یک خطا یا Error در نظر می گیرد و بلاک Catch را برای مدیریت خطای آن اجرا می کند .

JavaScript try and catch

دستور Try &catch در جاوا اسکریپت

The try statement allows you to define a block of code to be tested for errors while it is being executed.

عبارت Try به شما این اجازه می دهد که بلاکی از کد را در زمان اجرا برای یافتن خطاهایش بررسی کنید .

The catch statement allows you to define a block of code to be executed, if an error occurs in the try block.

عبارت Catch به شما این اجازه را می دهد که یک بلاک از کد را برای زمانی که یک خطا در بلاک Try رخ داد ، مشخص کنید.

The JavaScript statements try and catch come in pairs:

عبارت های جاوا اسکریپت یعنی Try و Catch با هم نوشته می شوند :

try {

  Block of code to try

}

catch(err) {

  Block of code to handle errors

}

JavaScript Throws Errors

ایجاد خطا در جاوا اسکریپت

When an error occurs, JavaScript will normally stop and generate an error message.

زمانی که یک خطا رخ می دهد ، به صورت عادی جاوا اسکریپت اجرای کد را متوقف می کند و یک پیغام خطا ایجاد می کند.

The technical term for this is: JavaScript will throw an exception (throw an error).

این عمل جاوا اسکریپت را ایجاد یک خطا و یا throw an error/exception می نامند.

JavaScript will actually create an Error object with two properties: name and message.

جاوا اسکریپت معمولا یک شی Error با دو ویژگی name و message نیز ایجاد می کنند.

The throw Statement

عبارت Throw

The throw statement allows you to create a custom error.

عبارت throw به شما این اجازه را می دهد که یک خطای شخصی سازی شده ایجاد کنید.

Technically you can throw an exception (throw an error).

از نظر فنی ، شما می توانید یک خطا ایجاد کنید .

The exception can be a JavaScript String, a Number, a Boolean or an Object:

خطا می تواند یک رشته متنی ، یک عدد ، یک بولین و یا یک شی باشد :

throw "Too big";    // throw a text

throw 500;         // throw a number

If you use throw together with try and catch, you can control program flow and generate custom error messages.

اگر شما از کلمه throw به همراه try و Catch استفاده کنید ،  شما می توانید جریان برنامه را کنترل کنید و پیغام خطاهای شخصی سازی شده ایجاد کنید.

Input Validation Example

مثال بررسی داده ورودی

This example examines input. If the value is wrong, an exception (err) is thrown.

در این مثال مقدار ورودی بررسی می شود . اگر مقدار ورودی غلط باشد یک خطا (exception) ایجاد می شود .

The exception (err) is caught by the catch statement and a custom error message is displayed:

خطا یا Exception توسط بلاک Catch دریافت می شود و یک پیغام خطای شخصی سازی شده نمایش پیدا می کند :

<!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 Validation

اعتبار سنجی در html

The code above is just an example.

کد بالا فقط یک مثال است .

Modern browsers will often use a combination of JavaScript and built-in HTML validation, using predefined validation rules defined in HTML attributes:

مرورگرهای مدرن اغلب از مجموعه ای از اعتبارسنجی های درونی جاوا اسکریپت و html با استفاده از قوانین اعتبار سنجی از قبل تعریف شده در ویژگی ها یا Attribute های html استفاده می کنند:

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

You can read more about forms validation in a later chapter of this tutorial.

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

The finally Statement

عبارت finally

The finally statement lets you execute code, after try and catch, regardless of the result:

عبارت finally به شما اجازه می دهد بعد از بلاک Try و Catch بدون توجه به نتیجه آنها کد مورد نظر خود را اجرا کنید:

Syntax

شیوه نوشتار

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

}

Example

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 = "";

 }

}

The Error Object

شی خطا یا Error

JavaScript has a built in error object that provides error information when an error occurs.

به صورت پیشفرض جاوا اسکریپت یک شی خطا یا Error  دارد که زمانی یک ارور رخ می دهد ، اطلاعاتی را در مورد خطا به ما ارائه می دهد .

The error object provides two useful properties: name and message.

شی خطا یا Error دو ویژگی پر استفاده دارد : نام و پیام

Error Object Properties

ویژگی های شی خطا یا Error

ویژگی توضیحات
Name نام خطا را می توان تنظیم  کرد و یا نام خطای رخ داده شده را به ما برمی گرداند .
Message پیغام خطا را می توان تنظیم کرد و یا پیغام خطای رخ داده شده را به ما برمی گرداند .

Error Name Values

مقادیر ویژگی Name شی خطا یا Error

Six different values can be returned by the error name property:

شش نوع مقدار متفاوت می تواند توسط ویژگی name خطا یا Error به ما برگردانده شود :

نام خطا توضیحات
EvalError یک ارور یا خطا در تابع eval() رخ داده است.
RangeError یک عدد خارج از محدوده مجاز قرار دارد .
ReferenceError مشکل دسترسی به مرجع وجود دارد.
SyntaxError شیوه نوشتن دستور مشکل دارد .
TypeError خطای مربوط به نوع داده رخ داده است.
URIError یک خطا در متد encodeUri() رخ داده است.

The six different values are described below.

شش مقدار متفاوت بالا در ادامه توضیح داده شده اند .

Eval Error

خطای Eval

An EvalError indicates an error in the eval() function.

یک خطای EvalError مشخص می کند که در تابع Eval() یک خطا رخ داده است.

Newer versions of JavaScript do not throw EvalError. Use SyntaxError instead.

ورژن های جدیدتر جاوا اسکریپت در این هنگام خطای SyntaxError به جای EvalError را ایجاد می کنند.

Range Error

خطای Range یا محدوده

A RangeError is thrown if you use a number that is outside the range of legal values.

یک خطای RangeError زمانی رخ می دهد که یک عدد از محدوده قانونی خود خارج باشد .

For example: You cannot set the number of significant digits of a number to 500.

برای مثال: شما نمی توانید تعداد ارقام مهم یک عدد را برابربا 500 قرار دهید .

Example

var num = 1;

try {

  num.toPrecision(500);   // A number cannot have 500 significant digits

}

catch(err) {

  document.getElementById("demo").innerHTML = err.name;

}

Reference Error

خطای مرجع یا Refrence

A ReferenceError is thrown if you use (reference) a variable that has not been declared:

یک خطای Refrence زمانی رخ می دهد که شما از متغیری که تعریف نشده است در برنامه خود استفاده کنید :

Example

var x;

try {

 x = y + 1;   // y cannot be referenced (used)

}

catch(err) {

  document.getElementById("demo").innerHTML = err.name;

}

Syntax Error

خطای شیوه نوشتار یا syntax

A SyntaxError is thrown if you try to evaluate code with a syntax error.

یک خطای نوشتار یا Syntax زمانی رخ می دهد که شما سعی کنید یک کد را با یک خطای نوشتاری اجرا کنید.

Example

try {

  eval("alert('Hello)");   // Missing ' will produce an error

}

catch(err) {

 document.getElementById("demo").innerHTML = err.name;

}

Type Error

خطای نوع یا Type

A TypeError is thrown if you use a value that is outside the range of expected types:

یک خطای نوع یا Type زمانی رخ می دهد که شما از مقداری استفاده کنید که از محدوده نوع داده های مجاز خارج باشد :

Example

var num = 1;

try {

 num.toUpperCase();   // You cannot convert a number to upper case

}

catch(err) {

 document.getElementById("demo").innerHTML = err.name;

}

URI (Uniform Resource Identifier) Error

خطای Uri

A URIError is thrown if you use illegal characters in a URI function:

یک خطای uri زمانی اتفاق می افتد که شما از کاراکترهای غیرقابل قبول در یک تابع uri استفاده کنید :

Example

try {

  decodeURI("%%%");   // You cannot URI decode percent signs

}

catch(err) {

 document.getElementById("demo").innerHTML = err.name;

}

Non-Standard Error Object Properties

ویژگی های غیر استاندارد شی خطا یا Error Object

Mozilla and Microsoft defines some non-standard error object properties:

موزیلا و ماکروسافت تعدادی ویژگی غیر استاندارد برای شی خطا یا error object تعریف کرده اند :

fileName (Mozilla)

نام فایل (موزیلا)

lineNumber (Mozilla)

شماره خط (موزیلا)

columnNumber (Mozilla)

شماره ستون (موزیلا)

stack (Mozilla)

استک (موزیلا)

description (Microsoft)

توضیحات (ماکروسافت)

number (Microsoft)

شماره (ماکروسافت)

Do not use these properties in public web sites. They will not work in all browsers.

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

Complete Error Reference

مرجع کامل خطا در جاوا اسکریپت

For a complete reference of the Error object, go to our Complete JavaScript Error Reference.

برای مشاهده مرجع کامل از شی خطا یا Object می توانید مقاله ما را تحت عنوان مرجع کامل خطا یا Error در جاوا اسکریپت بخوانید .