تفاوت میان نسخه‌های «JavaScript:خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن»

از ویکی کد
پرش به ناوبری پرش به جستجو
(صفحه‌ای تازه حاوی «<nowiki>https://www.w3schools.com/js/js_errors.asp</nowiki> = JavaScript Errors - Throw and Try to Catch = خطاها در جاوا اسک...» ایجاد کرد)
 
(۶ نسخهٔ میانیِ همین کاربر نمایش داده نشده است)
سطر ۱: سطر ۱:
<nowiki>https://www.w3schools.com/js/js_errors.asp</nowiki>
+
{{اصلاح جدول|}}{{منو عمودی جاوااسکریپت}}
  
= JavaScript Errors - Throw and Try to Catch =
 
خطاها در جاوا اسکریپت – رخ دادن خطا و رفع خطا
 
  
The <code>try</code> statement lets you test a block of code for errors.
+
عبارت{{Code|code=try|lang=javascript}}به شما اجازه می‌دهد بلاکی از کد را برای خطاها بررسی کنید. <ref>[https://www.w3schools.com/js/js_errors.asp w3schools.com: JavaScript Errors - Throw and Try to Catch]</ref>
  
عبارت try به شما اجازه می دهد بلاکی از کد را برای خطاها بررسی کنید .
+
عبارت{{Code|code=catch|lang=javascript}}به شما اجازه می‌دهد که خطا را مدیریت کنید.
  
The <code>catch</code> statement lets you handle the error.
+
عبارت{{Code|code=throw|lang=javascript}}به شما اجازه می‌دهد یک خطای شخصی‌سازی شده ایجاد کنید.
  
عبارت catch به شما اجازه می دهد که خطا را مدیریت کنید .
+
عبارت{{Code|code=finally|lang=javascript}}به شما اجازه می‌دهد بعد از بلاک‌های Try و catch بدون در نظر گرفتن نتایج آن‌ها، کد خود را اجرا کنید.
  
The <code>throw</code> statement lets you create custom errors.
+
==خطاها اتفاق خواهند افتاد!==
 +
در زمان اجرای کدهای جاوااسکریپت، خطاهای مختلفی می‌توانند رخ دهند.
  
عبارت throw به شما اجازه می دهد یک خطای شخصی سازی شده ایجاد کنید.
+
خطاها می‌توانند خطاهای کد باشند که توسط برنامه‌نویس ایجاد شده‌اند، خطاهایی به خاطر ورود داده اشتباه و سایر موارد.
 
 
The <code>finally</code> 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 برای ایجاد یک خطا  ، ایجاد کرده ایم:
 
 
 
<nowiki><p id="demo"></p></nowiki>
 
  
 +
===مثال===
 +
در این مثال، ما یک هشدار را به صورت adddlert برای ایجاد یک خطا، ایجاد کرده‌ایم:<syntaxhighlight lang="javascript">
 +
<p id="demo"></p>
  
 
<script>
 
<script>
 
 
try {
 
try {
 
+
  adddlert("Welcome guest!");
  adddlert("Welcome guest!");
 
 
 
 
}
 
}
 
 
catch(err) {
 
catch(err) {
 
+
  document.getElementById("demo").innerHTML = err.message;
  document.getElementById("demo").innerHTML = err.message;
 
 
 
 
}
 
}
 +
</script>
 +
</syntaxhighlight>{{نکته|type=|image=[[Image:OOjs_UI_icon_lightbulb-yellow.svg|38px]]|text=جاوااسکریپت '''adddlert''' را به صورت یک خطا {{به انگلیسی|error}}در نظر می‌گیرد و بلاک Catch را برای مدیریت خطای آن اجرا می‌کند.
 +
}}
  
</script>
+
==دستور Try و catch در جاوااسکریپت==
 +
عبارت{{Code|code=try|lang=javascript}}به شما این اجازه می‌دهد که بلاکی از کد را در زمان اجرا برای یافتن خطاهایش بررسی کنید.
  
JavaScript catches '''adddlert''' as an error, and executes the catch code to handle it.
+
The statement allows you to define a block of code to be executed, if an error occurs in the try block.
 
 
جاوا اسکریپت adddlert  را به صورت یک خطا یا Error در نظر می گیرد و بلاک Catch را برای مدیریت خطای آن اجرا می کند .
 
 
 
== JavaScript try and catch ==
 
دستور Try &catch در جاوا اسکریپت
 
 
 
The <code>try</code> statement allows you to define a block of code to be tested for errors while it is being executed.
 
 
 
عبارت Try به شما این اجازه می دهد که بلاکی از کد را در زمان اجرا برای یافتن خطاهایش بررسی کنید .
 
 
 
The <code>catch</code> 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 <code>try</code> and <code>catch</code> come in pairs:
 
 
 
عبارت های جاوا اسکریپت یعنی Try و Catch با هم نوشته می شوند :
 
  
 +
عبارت{{Code|code=catch|lang=javascript}}به شما این اجازه را می‌دهد که یک بلاک از کد را برای زمانی که یک خطا در بلاک Try رخ داد، مشخص کنید.عبارت‌های جاوااسکریپت یعنی{{Code|code=try|lang=javascript}}و{{Code|code=catch|lang=javascript}}با هم نوشته می‌شوند:<syntaxhighlight lang="javascript">
 
try {
 
try {
 
+
  Block of code to try
  ''Block of code to try''
 
 
 
 
}
 
}
 
+
catch(err) {
catch(''err'') {
+
  Block of code to handle errors
 
 
  ''Block of code to handle errors''
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
== 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 <code>throw</code> statement allows you to create a custom error.
+
زمانی که یک خطا رخ می‌دهد، به صورت عادی جاوااسکریپت اجرای کد را متوقف می‌کند و یک پیغام خطا ایجاد می‌کند.
  
عبارت throw به شما این اجازه را می دهد که یک خطای شخصی سازی شده ایجاد کنید.
+
این عمل جاوااسکریپت را ایجاد یک خطا یا '''(throw an error)''' می‌نامند.
  
Technically you can '''throw an exception (throw an error)'''.
+
{{نکته|type=|image=[[Image:OOjs_UI_icon_lightbulb-yellow.svg|38px]]|text=جاوااسکریپت معمولاً یک '''شیء Error''' با دو ویژگی '''name''' و '''message''' نیز ایجاد می‌کنند.
 +
}}
 +
==عبارت throw==
  
از نظر فنی ، شما می توانید یک خطا ایجاد کنید .
+
عبارت{{Code|code=throw|lang=javascript}}به شما این اجازه را می‌دهد که یک خطای شخصی‌سازی شده ایجاد کنید.
 +
از نظر فنی، شما می‌توانید '''یک خطا ایجاد''' کنید.
  
The exception can be a JavaScript <code>String</code>, a <code>Number</code>, a <code>Boolean</code> or an <code>Object</code>:
+
خطا می‌تواند یک رشته متنی{{Code|code=String|lang=javascript}}، یک عدد{{Code|code=Number|lang=javascript}}، یک بولین{{Code|code=Boolean|lang=javascript}} یا یک شی{{Code|code=Object|lang=javascript}} باشد:<syntaxhighlight lang="javascript">
 +
throw "Too big";    // throw a text
 +
throw 500;          // throw a number
 +
</syntaxhighlight>اگر شما از کلمه{{Code|code=throw|lang=javascript}}به همراه{{Code|code=try|lang=javascript}}و{{Code|code=catch|lang=javascript}}استفاده کنید، شما می‌توانید جریان برنامه را کنترل کنید و پیغام خطاهای شخصی‌سازی شده ایجاد کنید.
  
خطا می تواند یک رشته متنی ، یک عدد ، یک بولین و یا یک شی باشد :
+
==مثال بررسی داده ورودی==
 
+
در این مثال مقدار ورودی بررسی می‌شود. اگر مقدار ورودی غلط باشد یک خطا (exception) ایجاد می‌شود.
throw "Too big";    // throw a text
 
 
 
throw 500;         // throw a number
 
 
 
If you use <code>throw</code> together with <code>try</code> and <code>catch</code>, 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 دریافت می شود و یک پیغام خطای شخصی سازی شده نمایش پیدا می کند :
 
  
 +
خطا یا Exception توسط بلاک Catch دریافت می‌شود و یک پیغام خطای شخصی‌سازی شده نمایش پیدا می‌کند:<syntaxhighlight lang="javascript">
 
<!DOCTYPE html>
 
<!DOCTYPE html>
 
+
<html>
<nowiki><html></nowiki>
 
 
 
 
<body>
 
<body>
  
 
+
<p>Please input a number between 5 and 10:</p>
<nowiki><p>Please input a number between 5 and 10:</p></nowiki>
 
 
 
  
 
<input id="demo" type="text">
 
<input id="demo" type="text">
 
 
<button type="button" onclick="myFunction()">Test Input</button>
 
<button type="button" onclick="myFunction()">Test Input</button>
 
+
<p id="p01"></p>
<nowiki><p id="p01"></p></nowiki>
 
 
 
  
 
<script>
 
<script>
 
 
function myFunction() {
 
function myFunction() {
 
+
  var message, x;
  var message, x;
+
  message = document.getElementById("p01");
 
+
  message.innerHTML = "";
 message = document.getElementById("p01");
+
  x = document.getElementById("demo").value;
 
+
  try {
 message.innerHTML = "";
+
    if(x == "") throw "empty";
 
+
    if(isNaN(x)) throw "not a number";
 x = document.getElementById("demo").value;
+
    x = Number(x);
 
+
    if(x < 5) throw "too low";
  try {  
+
    if(x > 10) throw "too high";
 
+
  }
   if(x == "") throw "empty";
+
  catch(err) {
 
+
    message.innerHTML = "Input is " + err;
   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>
 
</script>
 
  
 
</body>
 
</body>
 +
</html>
 +
</syntaxhighlight>
  
<nowiki></html></nowiki>
+
==اعتبار سنجی در 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 <code>finally</code> statement lets you execute code, after try and catch, regardless of the result:
 
  
عبارت finally به شما اجازه می دهد بعد از بلاک Try و Catch بدون توجه به نتیجه آنها کد مورد نظر خود را اجرا کنید:
+
مرورگرهای مدرن اغلب از مجموعه ای از اعتبارسنجی‌های درونی جاوااسکریپت و html با استفاده از قوانین اعتبار سنجی از قبل تعریف شده در ویژگی‌ها یا Attribute های HTML استفاده می‌کنند:<syntaxhighlight lang="javascript">
 +
<input id="demo" type="number" min="5" max="10" step="1">
 +
</syntaxhighlight>شما می‌توانید مطالب بیشتری را در مورد اعتبارسنجی‌ها در فصل‌های آینده این آموزش بخوانید.
  
=== Syntax ===
+
==عبارت finally==
شیوه نوشتار
+
عبارت{{Code|code=finally|lang=javascript}}به شما اجازه می‌دهد بعد از بلاک Try و Catch بدون توجه به نتیجه آن‌ها کد مورد نظر خود را اجرا کنید:
  
 +
===شیوهٔ نوشتار===
 +
<syntaxhighlight lang="javascript" style="border:1px solid #AEB6BF; overflow-x: auto;">
 
try {
 
try {
 
+
  Block of code to try
  ''Block of code to try''
+
}
 
+
catch(err) {
 +
  Block of code to handle errors
 
}
 
}
 
catch(''err'') {
 
 
  ''Block of code to handle errors''
 
 
}
 
 
 
finally {
 
finally {
 
+
  Block of code to be executed regardless of the try / catch result
  ''Block of code to be executed regardless of the try / catch result''
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
=== Example ===
+
===مثال===
 +
<syntaxhighlight lang="javascript">
 
function myFunction() {
 
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 = "";
 +
  }
 +
}
 +
</syntaxhighlight>
  
  var message, x;
+
==شیء خطا {{به انگلیسی|Error Object}}==
 
+
به صورت پیشفرض جاوااسکریپت یک شی خطا یا Error دارد که زمانی یک ارور رخ می‌دهد، اطلاعاتی را در مورد خطا به ما ارائه می‌دهد.
  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 دو ویژگی پر استفاده دارد: نام و پیام
  
== Error Object Properties ==
+
==ویژگی‌های شیء خطا {{به انگلیسی|Error Object}} ==
ویژگی های شی خطا یا Error
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|ویژگی
 
|ویژگی
سطر ۲۹۵: سطر ۱۵۶:
 
|-
 
|-
 
|Name
 
|Name
|نام خطا را می توان تنظیم  کرد و یا نام خطای رخ داده شده را به ما برمی گرداند .
+
|نام خطا را می‌توان تنظیم کرد یا نام خطای رخ داده شده را به ما برمی‌گرداند.
 
|-
 
|-
 
|Message
 
|Message
|پیغام خطا را می توان تنظیم کرد و یا پیغام خطای رخ داده شده را به ما برمی گرداند .
+
|پیغام خطا را می‌توان تنظیم کرد یا پیغام خطای رخ داده شده را به ما برمی‌گرداند.
 
|}
 
|}
  
== Error Name Values ==
+
==مقادیر ویژگی Name شیء خطا {{به انگلیسی|Error Object}}==
مقادیر ویژگی Name شی خطا یا Error
+
۶ نوع مقدار متفاوت می‌تواند توسط ویژگی name خطا یا Error به ما برگردانده شود:
 
 
Six different values can be returned by the error name property:
 
 
 
شش نوع مقدار متفاوت می تواند توسط ویژگی name خطا یا Error به ما برگردانده شود :
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|نام خطا
 
|نام خطا
سطر ۳۱۲: سطر ۱۶۹:
 
|-
 
|-
 
|EvalError
 
|EvalError
|یک ارور یا خطا در تابع eval() رخ داده است.
+
|یک ارور یا خطا در تابع eval() رخ داده‌است.
 
|-
 
|-
 
|RangeError
 
|RangeError
|یک عدد خارج از محدوده مجاز قرار دارد .
+
|یک عدد خارج از محدوده مجاز قرار دارد.
 
|-
 
|-
 
|ReferenceError
 
|ReferenceError
|مشکل دسترسی به مرجع وجود دارد.
+
|مشکل دسترسی به مرجع وجود دارد.
 
|-
 
|-
 
|SyntaxError
 
|SyntaxError
|شیوه نوشتن دستور مشکل دارد .
+
|شیوه نوشتن دستور مشکل دارد.
 
|-
 
|-
 
|TypeError
 
|TypeError
|خطای مربوط به نوع داده رخ داده است.
+
|خطای مربوط به نوع داده رخ داده‌است.
 
|-
 
|-
 
|URIError
 
|URIError
|یک خطا در متد encodeUri() رخ داده است.
+
|یک خطا در متد encodeUri() رخ داده‌است.
 
|}
 
|}
The six different values are described below.
+
۶ مقدار متفاوت بالا در ادامه توضیح داده شده‌اند.
 
 
شش مقدار متفاوت بالا در ادامه توضیح داده شده اند .
 
 
 
== Eval Error ==
 
خطای Eval
 
 
 
An <code>EvalError</code> 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 <code>RangeError</code> is thrown if you use a number that is outside the range of legal values.
+
==خطای Eval==
 +
یک خطای{{Code|code=EvalError|lang=javascript}}مشخص می‌کند که در تابع{{Code|code=eval()|lang=javascript}}یک خطا رخ داده‌است.
  
یک خطای RangeError زمانی رخ می دهد که یک عدد از محدوده قانونی خود خارج باشد .
+
{{نکته|type=delete|text=ورژن‌های جدیدتر جاوااسکریپت در این هنگام خطای SyntaxError به جای EvalError را ایجاد می‌کنند.}}
  
For example: You cannot set the number of significant digits of a number to 500.  
+
==خطای Range {{به فارسی|محدوده}}==
 +
یک خطای{{Code|code=RangeError|lang=javascript}}زمانی رخ می‌دهد که یک عدد از محدوده قانونی خود خارج باشد.
  
برای مثال: شما نمی توانید تعداد ارقام مهم یک عدد را برابربا 500 قرار دهید .
+
برای مثال: شما نمی‌توانید تعداد ارقام مهم یک عدد را برابربا ۵۰۰ قرار دهید.
  
=== Example ===
+
===مثال===
 +
<syntaxhighlight lang="javascript">
 
var num = 1;
 
var num = 1;
 
 
try {
 
try {
 
+
  num.toPrecision(500);   // A number cannot have 500 significant digits
  num.toPrecision(500);   // A number cannot have 500 significant digits
 
 
 
 
}
 
}
 
 
catch(err) {
 
catch(err) {
 
+
  document.getElementById("demo").innerHTML = err.name;
  document.getElementById("demo").innerHTML = err.name;
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
== Reference Error ==
+
==خطای Refrence {{به فارسی|مرجع}}==
خطای مرجع یا Refrence
+
یک{{Code|code=ReferenceError|lang=javascript}}  زمانی رخ می‌دهد که شما از متغیری که تعریف نشده‌است در برنامه خود استفاده کنید:  
 
+
===مثال===
A <code>ReferenceError</code> is thrown if you use (reference) a variable that has not been declared:
+
<syntaxhighlight lang="javascript">
 
 
یک خطای Refrence زمانی رخ می دهد که شما از متغیری که تعریف نشده است در برنامه خود استفاده کنید :
 
 
 
=== Example ===
 
 
var x;
 
var x;
 
 
try {
 
try {
 
+
  x = y + 1;   // y cannot be referenced (used)
 x = y + 1;   // y cannot be referenced (used)
 
 
 
 
}
 
}
 
 
catch(err) {
 
catch(err) {
 
+
  document.getElementById("demo").innerHTML = err.name;
  document.getElementById("demo").innerHTML = err.name;
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
== Syntax Error ==
+
==خطای شیوه نوشتار {{به انگلیسی|syntax}}==
خطای شیوه نوشتار یا syntax
+
یک خطای نوشتار یا{{Code|code=SyntaxError|lang=javascript}} زمانی رخ می‌دهد که شما سعی کنید یک کد را با یک خطای نوشتاری اجرا کنید.
  
A <code>SyntaxError</code> is thrown if you try to evaluate code with a syntax error.
+
===مثال===
 
+
<syntaxhighlight lang="javascript">
یک خطای نوشتار یا Syntax زمانی رخ می دهد که شما سعی کنید یک کد را با یک خطای نوشتاری اجرا کنید.
 
 
 
=== Example ===
 
 
try {
 
try {
 
+
  eval("alert('Hello)");   // Missing ' will produce an error
  eval("alert('Hello)");   // Missing ' will produce an error
 
 
 
 
}
 
}
 
 
catch(err) {
 
catch(err) {
 +
  document.getElementById("demo").innerHTML = err.name;
 +
}
 +
</syntaxhighlight>
  
 document.getElementById("demo").innerHTML = err.name;
+
==خطای نوع {{به انگلیسی|Type}}==
 
+
یک خطای نوع یا{{Code|code=TypeError|lang=javascript}} زمانی رخ می‌دهد که شما از مقداری استفاده کنید که از محدوده نوع داده‌های مجاز خارج باشد:
}
 
 
 
== Type Error ==
 
خطای نوع یا Type
 
 
 
A <code>TypeError</code> is thrown if you use a value that is outside the range of expected types:
 
 
 
یک خطای نوع یا Type زمانی رخ می دهد که شما از مقداری استفاده کنید که از محدوده نوع داده های مجاز خارج باشد :
 
  
=== Example ===
+
===مثال===
 +
<syntaxhighlight lang="javascript">
 
var num = 1;
 
var num = 1;
 
 
try {
 
try {
 
+
  num.toUpperCase();   // You cannot convert a number to upper case
 num.toUpperCase();   // You cannot convert a number to upper case
 
 
 
 
}
 
}
 
 
catch(err) {
 
catch(err) {
 
+
  document.getElementById("demo").innerHTML = err.name;
 document.getElementById("demo").innerHTML = err.name;
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
== URI (Uniform Resource Identifier) Error ==
+
==URI (تعیین‌کنندهٔ هویت منبع یکنواخت)==
خطای Uri
+
یک خطای {{Code|code=URIError|lang=javascript}}زمانی اتفاق می‌افتد که شما از کاراکترهای غیرقابل قبول در یک تابع URI استفاده کنید:
 
 
A <code>URIError</code> is thrown if you use illegal characters in a URI function:
 
 
 
یک خطای uri زمانی اتفاق می افتد که شما از کاراکترهای غیرقابل قبول در یک تابع uri استفاده کنید :
 
  
=== Example ===
+
===مثال===
 +
<syntaxhighlight lang="javascript">
 
try {
 
try {
 
+
  decodeURI("%%%");   // You cannot URI decode percent signs
  decodeURI("%%%");   // You cannot URI decode percent signs
 
 
 
 
}
 
}
 
 
catch(err) {
 
catch(err) {
 
+
  document.getElementById("demo").innerHTML = err.name;
 document.getElementById("demo").innerHTML = err.name;
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
== Non-Standard Error Object Properties ==
+
==ویژگی‌های غیر استاندارد شیء خطا {{به انگلیسی|Error Object}}==
ویژگی های غیر استاندارد شی خطا یا 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 ==
+
{{نکته|type=delete|text=موزیلا و ماکروسافت تعدادی ویژگی غیر استاندارد برای شی خطا یا error object تعریف کرده‌اند:{{سرخط}}نام فایل (موزیلا){{سرخط}}شماره خط (موزیلا){{سرخط}}شماره ستون (موزیلا){{سرخط}}استک (موزیلا){{سرخط}}توضیحات (ماکروسافت){{سرخط}}شماره (ماکروسافت){{سرخط}}از این ویژگی‌ها برای وب سایتهای عمومی استفاده نکنید. این ویژگی در تمامی مرورگرها کار نخواهند کرد.
مرجع کامل خطا در جاوا اسکریپت
+
}}
  
For a complete reference of the Error object, go to our Complete JavaScript Error Reference.
+
==مرجع کامل خطا در جاوااسکریپت==
  
برای مشاهده مرجع کامل از شی خطا یا Object می توانید مقاله ما را تحت عنوان مرجع کامل خطا یا Error در جاوا اسکریپت بخوانید .
+
برای مشاهده مرجع کامل از شی خطا یا Object می‌توانید مقاله ما را تحت عنوان مرجع کامل خطا یا Error در جاوااسکریپت بخوانید.
 +
==منابع آموزشی==
 +
{{پانویس|چپ‌چین=بله}}
 +
{{منو افقی جاوااسکریپت}}
 +
<references />

نسخهٔ ‏۱۷ آبان ۱۳۹۸، ساعت ۲۲:۳۷

میانبر:
الگو:اج
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳JavaScript:قوانین و اصول اولیه زبان جاوااسکریپت
۴JavaScript:خروجی جاوااسکریپت
۵JavaScript:عبارت‌ها در جاوااسکریپت
۶JavaScript:شیوهٔ نوشتن (Syntax) عبارات یا دستورات در جاوااسکریپت
۷JavaScript:نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸JavaScript:متغیرها در جاوااسکریپت
۹JavaScript:عملگرهای جاوااسکریپت
۱۰JavaScript:عملگرهای ریاضی در جاوااسکریپت
۱۱JavaScript:عملگرهای مقداردهی در جاوااسکریپت
۱۲JavaScript:انواع داده‌ها در جاوااسکریپت
۱۳JavaScript:توابع در جاوااسکریپت
۱۴JavaScript:اشیاء (object) در جاوااسکریپت
۱۵JavaScript:رویدادها در جاوااسکریپت
۱۶JavaScript:رشته‌های متنی (string) در جاوااسکریپت
۱۷JavaScript:متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸JavaScript:اعداد در جاوااسکریپت
۱۹JavaScript:متدهای داده‌های عددی در جاوااسکریپت
۲۰JavaScript:آرایه‌ها در جاوااسکریپت
۲۱JavaScript:متدهای آرایه در جاوااسکریپت
۲۲JavaScript:مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳JavaScript:متدهای پیمایش آرایه در جاوااسکریپت
۲۴JavaScript:اشیاء تاریخ و زمان در جاوااسکریپت
۲۵JavaScript:فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶JavaScript:متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷JavaScript:متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸JavaScript:شی ریاضی (Math) در جاوااسکریپت
۲۹JavaScript:ایجاد عدد تصادفی در جاوااسکریپت
۳۰JavaScript:مقادیر بولین (Booleans) در جاوااسکریپت
۳۱JavaScript:عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲JavaScript:ساختار if else و else if در جاوااسکریپت
۳۳JavaScript:تکه کد Switch در جاوا اسکریپت
۳۴JavaScript:حلقه For در جاوااسکریپت
۳۵JavaScript:حلقه While در جاوااسکریپت
۳۶JavaScript:کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷JavaScript:تبدیل نوع داده‌ها در جاوااسکریپت
۳۸JavaScript:عملیات‌های بیتی در جاوااسکریپت
۳۹JavaScript:عبارات با قاعده در جاوااسکریپت
۴۰JavaScript:خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱JavaScript:Scope در جاوااسکریپت
۴۲JavaScript:Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳JavaScript:استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴JavaScript:کلمه کلیدی This در جاوااسکریپت
۴۵JavaScript:کلمه کلیدی Let در جاوااسکریپت
۴۶JavaScript:ثابت‌ها در جاوااسکریپت
۴۷JavaScript:تعریف توابع به صورت پیکان
۴۸JavaScript:کلاس‌ها در جاوااسکریپت
۴۹JavaScript:اشکال‌زدایی در جاوااسکریپت
۵۰JavaScript:راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱JavaScript:بهترین تمرینات جاوااسکریپت
۵۲JavaScript:اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳JavaScript:کارایی در جاوااسکریپت
۵۴JavaScript:کلمات رزرو شده در جاوااسکریپت
۵۵JavaScript:ورژن‌های جاوااسکریپت
۵۶JavaScript:ECMAScript 5 - JavaScript 5
۵۷JavaScript:ECMAScript 6 - ECMAScript 2015
۵۸JavaScript:جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱JavaScript:فرم‌ها در جاوااسکریپت
۲JavaScript:API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱JavaScript:اشیاء در جاوااسکریپت
۲JavaScript:ویژگی‌های اشیاء در جاوااسکریپت
۳JavaScript:متدهای اشیاء در جاوااسکریپت
۴JavaScript:روش‌های دسترسی به شیء در جاوااسکریپت
۵JavaScript:سازنده‌های شیء در جاوااسکریپت
۶JavaScript:شکل اصلی شیء در جاوااسکریپت
۷JavaScript:متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱JavaScript:تعریف تابع در جاوااسکریپت
۲JavaScript:پارامتر توابع در جاوااسکریپت
۳JavaScript:فراخوانی تابع در جاوااسکریپت
۴JavaScript:صدا کردن تابع در جاوااسکریپت
۵JavaScript:تابع Apply در جاوااسکریپت
۶JavaScript:بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱JavaScript:HTML DOM در جاوااسکریپت
۲JavaScript:متدهای HTML DOM در جاوااسکریپت
۳JavaScript:HTML DOM Document در جاوااسکریپت
۴JavaScript:عناصر HTML DOM در جاوااسکریپت
۵JavaScript:HTML DOM در جاوااسکریپت - تغییر محتوای HTML
۶JavaScript:DOM در جاوااسکریپت - تغییر CSS
۷JavaScript:انیمیشن در HTML DOM جاوااسکریپت
۸JavaScript:رویدادها در HTML DOM جاوااسکریپت
۹JavaScript:شنونده رویداد در HTML DOM جاوااسکریپت
۱۰JavaScript:پیمایش در HTML DOM جاوااسکریپت
۱۱JavaScript:عناصر (گره‌ها) HTML DOM در جاوااسکریپت
۱۲JavaScript:مجموعه‌های HTML DOM جاوااسکریپت
۱۳JavaScript:لیست گره‌ها در HTML DOM جاوااسکریپت
Browser BOM
۱JavaScript:پنجره جاوااسکریپت - مدل شیء مرورگر
۲JavaScript:پنجره صفحه نمایش در جاوااسکریپت
۳JavaScript:موقعیت پنجره در جاوااسکریپت
۴JavaScript:تاریخچه پنجره در جاوااسکریپت
۵JavaScript:ناوبری پنجره در جاوااسکریپت
۶JavaScript:جعبه پیغام جاوااسکریپت
۷JavaScript:رویدادهای زمان‌بندی شده در جاوااسکریپت
۸JavaScript:کوکی‌های جاوااسکریپت
AJAX
۱JavaScript:مقدمه‌ای بر AJAX
۲JavaScript:AJAX - شیء XMLHttpRequest
۳JavaScript:AJAX - ارسال یک درخواست به سرور
۴AJAX - پاسخ سرور
۵JavaScript:مثال‌های XML در AJAX
۶JavaScript:مثال‌های PHP در AJAX
۷JavaScript:مثال‌های ASP در AJAX
۸JavaScript:مثال پایگاه داده در AJAX
۹JavaScript:نرم‌افزارهای XML
۱۰JavaScript:مثال‌های AJAX
JSON
۱JavaScript:مقدمه‌ای بر JSON
۲JavaScript:شیوهٔ نوشتار JSON
۳JavaScript:JSON در برابر XML
۴JavaScript:انواع داده‌های مجاز در JSON
۵متد JSON.parse()
۶متد JSON.stringify()
۷JavaScript:اشیاء JSON
۸JavaScript:آرایه‌ها در JSON
۹JavaScript:PHP در JSON
۱۰JavaScript:HTML در JSON
۱۱JavaScript:JSONP
jQuery
۱JavaScript:جاوااسکریپت / انتخابگرهای DOM جی‌کوئری
۲JavaScript:جاوااسکریپت / عناصر HTML جی‌کوئری
۳JavaScript:جاوااسکریپت / استایل‌های CSS در جی‌کوئری
۴JavaScript:جاوااسکریپت / HTML DOM در جی‌کوئری


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

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

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

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

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

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

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

مثال

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

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

<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>


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

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

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

عبارت​catch​به شما این اجازه را می‌دهد که یک بلاک از کد را برای زمانی که یک خطا در بلاک Try رخ داد، مشخص کنید.عبارت‌های جاوااسکریپت یعنی​try​و​catch​با هم نوشته می‌شوند:

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}

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

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

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

عبارت throw

عبارت​throw​به شما این اجازه را می‌دهد که یک خطای شخصی‌سازی شده ایجاد کنید. از نظر فنی، شما می‌توانید یک خطا ایجاد کنید.

خطا می‌تواند یک رشته متنی​String​، یک عدد​Number​، یک بولین​Boolean​ یا یک شی​Object​ باشد:

throw "Too big";    // throw a text
throw 500;          // throw a number

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

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

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

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

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

مرورگرهای مدرن اغلب از مجموعه ای از اعتبارسنجی‌های درونی جاوااسکریپت و html با استفاده از قوانین اعتبار سنجی از قبل تعریف شده در ویژگی‌ها یا Attribute های 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
}

مثال

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

شیء خطا (به انگلیسی: Error Object)

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

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

ویژگی‌های شیء خطا (به انگلیسی: Error Object)

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

مقادیر ویژگی Name شیء خطا (به انگلیسی: Error Object)

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

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

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

خطای Eval

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


خطای Range (به فارسی: محدوده)

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

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

مثال

var num = 1;
try {
  num.toPrecision(500);   // A number cannot have 500 significant digits
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

خطای Refrence (به فارسی: مرجع)

یک​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;
}

خطای نوع (به انگلیسی: Type)

یک خطای نوع یا​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 percent signs
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

ویژگی‌های غیر استاندارد شیء خطا (به انگلیسی: Error Object)


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

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

منابع آموزشی