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

از ویکی کد
پرش به ناوبری پرش به جستجو
(۲ نسخهٔ میانیِ همین کاربر نمایش داده نشده است)
سطر ۱: سطر ۱:
<nowiki>https://www.w3schools.com/js/js_errors.asp</nowiki>
+
{{اصلاح جدول|}}{{منو عمودی جاوااسکریپت}}
{{منو عمودی جاوااسکریپت}}ظظظظظظظظظظظظظظظظظظظظ <ref>[https://www.w3schools.com/js/js_errors.asp w3schools.com: JavaScript Errors - Throw and Try to Catch]</ref>
 
  
=خطاها در جاوااسکریپت – رخ دادن خطا و رفع خطا=
 
  
 +
عبارت{{Code|code=try|lang=javascript}}به شما اجازه می‌دهد بلاکی از کد را برای خطاها بررسی کنید. <ref>[https://www.w3schools.com/js/js_errors.asp w3schools.com: JavaScript Errors - Throw and Try to Catch]</ref>
  
The <code>try</code> statement lets you test a block of code for errors.
+
عبارت{{Code|code=catch|lang=javascript}}به شما اجازه می‌دهد که خطا را مدیریت کنید.
  
عبارت try به شما اجازه می‌دهد بلاکی از کد را برای خطاها بررسی کنید.
+
عبارت{{Code|code=throw|lang=javascript}}به شما اجازه می‌دهد یک خطای شخصی‌سازی شده ایجاد کنید.
  
The <code>catch</code> statement lets you handle the error.
+
عبارت{{Code|code=finally|lang=javascript}}به شما اجازه می‌دهد بعد از بلاک‌های Try و catch بدون در نظر گرفتن نتایج آن‌ها، کد خود را اجرا کنید.
 
 
عبارت 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 بدون در نظر گرفتن نتایج آنها، کد خود را اجرا کنید.
 
  
 
==خطاها اتفاق خواهند افتاد!==
 
==خطاها اتفاق خواهند افتاد!==
 
 
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.
 
  
 
خطاها می‌توانند خطاهای کد باشند که توسط برنامه‌نویس ایجاد شده‌اند، خطاهایی به خاطر ورود داده اشتباه و سایر موارد.
 
خطاها می‌توانند خطاهای کد باشند که توسط برنامه‌نویس ایجاد شده‌اند، خطاهایی به خاطر ورود داده اشتباه و سایر موارد.
  
 
===مثال===
 
===مثال===
In this مثال we have written alert as adddlert to deliberately produce an error:
+
در این مثال، ما یک هشدار را به صورت adddlert برای ایجاد یک خطا، ایجاد کرده‌ایم:<syntaxhighlight lang="javascript">
 
+
<p id="demo"></p>
در این مثال، ما یک هشدار را به صورتadddlert برای ایجاد یک خطا، ایجاد کرده‌ایم:
 
 
 
<nowiki><p id="demo"></p></nowiki>
 
  
 
<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>
 
</script>
 
+
</syntaxhighlight>{{نکته|type=|image=[[Image:OOjs_UI_icon_lightbulb-yellow.svg|38px]]|text=جاوااسکریپت '''adddlert''' را به صورت یک خطا {{به انگلیسی|error}}در نظر می‌گیرد و بلاک Catch را برای مدیریت خطای آن اجرا می‌کند.
JavaScript catches '''adddlert''' as an error, and executes the catch code to handle it.
+
}}
 
 
جاوااسکریپت adddlert را به صورت یک خطا یا Error در نظر می‌گیرد و بلاک Catch را برای مدیریت خطای آن اجرا می‌کند.
 
  
 
==دستور Try و catch در جاوااسکریپت==
 
==دستور Try و catch در جاوااسکریپت==
 +
عبارت{{Code|code=try|lang=javascript}}به شما این اجازه می‌دهد که بلاکی از کد را در زمان اجرا برای یافتن خطاهایش بررسی کنید.
  
 +
The statement allows you to define a block of code to be executed, if an error occurs in the try block.
  
The <code>try</code> statement allows you to define a block of code to be tested for errors while it is being executed.
+
عبارت{{Code|code=catch|lang=javascript}}به شما این اجازه را می‌دهد که یک بلاک از کد را برای زمانی که یک خطا در بلاک Try رخ داد، مشخص کنید.عبارت‌های جاوااسکریپت یعنی{{Code|code=try|lang=javascript}}و{{Code|code=catch|lang=javascript}}با هم نوشته می‌شوند:<syntaxhighlight lang="javascript">
 
 
عبارت 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 با هم نوشته می‌شوند:
 
 
 
 
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>
  
 
==ایجاد خطاها در جاوااسکریپت==
 
==ایجاد خطاها در جاوااسکریپت==
 
 
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)''' می‌نامند.
 
 
این عمل جاوااسکریپت را ایجاد یک خطا یا throw an error/exception می‌نامند.
 
 
 
JavaScript will actually create an '''Error object''' with two properties: '''name''' and '''message'''.
 
 
 
جاوااسکریپت معمولاً یک شی Error با دو ویژگی name و message نیز ایجاد می‌کنند.
 
 
 
==عبارت throw ==
 
 
 
 
 
The <code>throw</code> statement allows you to create a custom error.
 
 
 
عبارت throw به شما این اجازه را می‌دهد که یک خطای شخصی‌سازی شده ایجاد کنید.
 
 
 
Technically you can '''throw an exception (throw an error)'''.
 
 
 
از نظر فنی، شما می‌توانید یک خطا ایجاد کنید.
 
  
The exception can be a JavaScript <code>String</code>, a <code>Number</code>, a <code>Boolean</code> or an <code>Object</code>:
+
{{نکته|type=|image=[[Image:OOjs_UI_icon_lightbulb-yellow.svg|38px]]|text=جاوااسکریپت معمولاً یک '''شیء Error''' با دو ویژگی '''name''' و '''message''' نیز ایجاد می‌کنند.
 +
}}
 +
==عبارت throw==
  
خطا می‌تواند یک رشته متنی، یک عدد، یک بولین یا یک شی باشد:
+
عبارت{{Code|code=throw|lang=javascript}}به شما این اجازه را می‌دهد که یک خطای شخصی‌سازی شده ایجاد کنید.
 +
از نظر فنی، شما می‌توانید '''یک خطا ایجاد''' کنید.
  
 +
خطا می‌تواند یک رشته متنی{{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 "Too big";    // throw a text
 
+
throw 500;         // throw a number
throw 500;         // throw a number
+
</syntaxhighlight>اگر شما از کلمه{{Code|code=throw|lang=javascript}}به همراه{{Code|code=try|lang=javascript}}و{{Code|code=catch|lang=javascript}}استفاده کنید، شما می‌توانید جریان برنامه را کنترل کنید و پیغام خطاهای شخصی‌سازی شده ایجاد کنید.
 
 
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 استفاده کنید، شما می‌توانید جریان برنامه را کنترل کنید و پیغام خطاهای شخصی‌سازی شده ایجاد کنید.
 
  
 
==مثال بررسی داده ورودی==
 
==مثال بررسی داده ورودی==
 
 
This مثال examines input. If the value is wrong, an exception (err) is thrown.
 
 
 
در این مثال مقدار ورودی بررسی می‌شود. اگر مقدار ورودی غلط باشد یک خطا (exception) ایجاد می‌شود.
 
در این مثال مقدار ورودی بررسی می‌شود. اگر مقدار ورودی غلط باشد یک خطا (exception) ایجاد می‌شود.
  
The exception (err) is caught by the catch statement and a custom error message is displayed:
+
خطا یا Exception توسط بلاک Catch دریافت می‌شود و یک پیغام خطای شخصی‌سازی شده نمایش پیدا می‌کند:<syntaxhighlight lang="javascript">
 
 
خطا یا Exception توسط بلاک Catch دریافت می‌شود و یک پیغام خطای شخصی‌سازی شده نمایش پیدا می‌کند:
 
 
 
 
<!DOCTYPE html>
 
<!DOCTYPE html>
 
+
<html>
<nowiki><html></nowiki>
 
 
 
 
<body>
 
<body>
  
<nowiki><p>Please input a number between 5 and 10:</p></nowiki>
+
<p>Please input a number between 5 and 10:</p>
  
 
<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 ==
 
 
 
 
 
The code above is just an مثال.
 
 
 
 
کد بالا فقط یک مثال است.
 
کد بالا فقط یک مثال است.
  
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 استفاده می‌کنند:<syntaxhighlight lang="javascript">
 
+
<input id="demo" type="number" min="5" max="10" step="1">
مرورگرهای مدرن اغلب از مجموعه ای از اعتبارسنجی‌های درونی جاوااسکریپت و html با استفاده از قوانین اعتبار سنجی از قبل تعریف شده در ویژگی‌ها یا Attributeهای html استفاده می‌کنند:
+
</syntaxhighlight>شما می‌توانید مطالب بیشتری را در مورد اعتبارسنجی‌ها در فصل‌های آینده این آموزش بخوانید.
 
 
<input id="demo" type="number" min="5" max="10" step="۱">
 
 
 
You can read more about forms validation in a later chapter of this tutorial.
 
 
 
شما می‌توانید مطالب بیشتری را در مورد اعتبارسنجی‌ها در فصل‌های آینده این آموزش بخوانید.
 
  
 
==عبارت finally==
 
==عبارت finally==
 +
عبارت{{Code|code=finally|lang=javascript}}به شما اجازه می‌دهد بعد از بلاک Try و Catch بدون توجه به نتیجه آن‌ها کد مورد نظر خود را اجرا کنید:
  
 
+
===شیوهٔ نوشتار===
The <code>finally</code> statement lets you execute code, after try and catch, regardless of the result:
+
<syntaxhighlight lang="javascript" style="border:1px solid #AEB6BF; overflow-x: auto;">
 
 
عبارت finally به شما اجازه می‌دهد بعد از بلاک Try و Catch بدون توجه به نتیجه آنها کد مورد نظر خود را اجرا کنید:
 
 
 
===Syntax===
 
شیوه نوشتار
 
 
 
 
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''
 
 
 
 
}
 
}
 
 
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>
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
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 "is empty";
 
+
    if(isNaN(x)) throw "is not a number";
x = document.getElementById("demo").value;
+
    x = Number(x);
 
+
    if(x > 10) throw "is too high";
try {
+
    if(x < 5) throw "is too low";
 
+
  }
if(x == "") throw "is empty";
+
  catch(err) {
 
+
    message.innerHTML = "Error: " + err + ".";
if(isNaN(x)) throw "is not a number";
+
  }
 
+
  finally {
x = Number(x);
+
    document.getElementById("demo").value = "";
 
+
  }
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>
  
 
==شیء خطا {{به انگلیسی|Error Object}}==
 
==شیء خطا {{به انگلیسی|Error Object}}==
 
 
JavaScript has a built in error object that provides error information when an error occurs.
 
 
 
به صورت پیشفرض جاوااسکریپت یک شی خطا یا Error دارد که زمانی یک ارور رخ می‌دهد، اطلاعاتی را در مورد خطا به ما ارائه می‌دهد.
 
به صورت پیشفرض جاوااسکریپت یک شی خطا یا Error دارد که زمانی یک ارور رخ می‌دهد، اطلاعاتی را در مورد خطا به ما ارائه می‌دهد.
 
The error object provides two useful properties: name and message.
 
  
 
شی خطا یا Error دو ویژگی پر استفاده دارد: نام و پیام
 
شی خطا یا Error دو ویژگی پر استفاده دارد: نام و پیام
  
==ویژگی‌های شیء خطا {{به انگلیسی|Error Object}}==
+
==ویژگی‌های شیء خطا {{به انگلیسی|Error Object}} ==
<br />
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|ویژگی
 
|ویژگی
سطر ۲۹۸: سطر ۱۶۳:
  
 
==مقادیر ویژگی Name شیء خطا {{به انگلیسی|Error Object}}==
 
==مقادیر ویژگی Name شیء خطا {{به انگلیسی|Error Object}}==
 
+
۶ نوع مقدار متفاوت می‌تواند توسط ویژگی name خطا یا Error به ما برگردانده شود:
 
 
Six different values can be returned by the error name property:
 
 
 
شش نوع مقدار متفاوت می‌تواند توسط ویژگی name خطا یا Error به ما برگردانده شود:
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|نام خطا
 
|نام خطا
سطر ۳۲۵: سطر ۱۸۶:
 
|یک خطا در متد encodeUri() رخ داده‌است.
 
|یک خطا در متد encodeUri() رخ داده‌است.
 
|}
 
|}
The six different values are described below.
+
۶ مقدار متفاوت بالا در ادامه توضیح داده شده‌اند.
 
 
شش مقدار متفاوت بالا در ادامه توضیح داده شده‌اند.
 
  
 
==خطای Eval==
 
==خطای Eval==
 +
یک خطای{{Code|code=EvalError|lang=javascript}}مشخص می‌کند که در تابع{{Code|code=eval()|lang=javascript}}یک خطا رخ داده‌است.
  
 
+
{{نکته|type=delete|text=ورژن‌های جدیدتر جاوااسکریپت در این هنگام خطای SyntaxError به جای EvalError را ایجاد می‌کنند.}}
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 {{به فارسی|محدوده}}==
 
==خطای Range {{به فارسی|محدوده}}==
 
+
یک خطای{{Code|code=RangeError|lang=javascript}}زمانی رخ می‌دهد که یک عدد از محدوده قانونی خود خارج باشد.
 
 
A <code>RangeError</code> is thrown if you use a number that is outside the range of legal values.
 
 
 
یک خطای RangeError زمانی رخ می‌دهد که یک عدد از محدوده قانونی خود خارج باشد.
 
 
 
For مثال: You cannot set the number of significant digits of a number to 500.
 
  
 
برای مثال: شما نمی‌توانید تعداد ارقام مهم یک عدد را برابربا ۵۰۰ قرار دهید.
 
برای مثال: شما نمی‌توانید تعداد ارقام مهم یک عدد را برابربا ۵۰۰ قرار دهید.
  
 
===مثال===
 
===مثال===
var num = ۱;
+
<syntaxhighlight lang="javascript">
 
+
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:
 
 
 
یک خطای Refrence زمانی رخ می‌دهد که شما از متغیری که تعریف نشده‌است در برنامه خود استفاده کنید:
 
 
 
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
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}}==
 
==خطای شیوه نوشتار {{به انگلیسی|syntax}}==
 
+
یک خطای نوشتار یا{{Code|code=SyntaxError|lang=javascript}} زمانی رخ می‌دهد که شما سعی کنید یک کد را با یک خطای نوشتاری اجرا کنید.
 
 
A <code>SyntaxError</code> is thrown if you try to evaluate code with a syntax error.
 
 
 
یک خطای نوشتار یا Syntax زمانی رخ می‌دهد که شما سعی کنید یک کد را با یک خطای نوشتاری اجرا کنید.
 
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
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;
document.getElementById("demo").innerHTML = err.name;
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
 
==خطای نوع {{به انگلیسی|Type}}==
 
==خطای نوع {{به انگلیسی|Type}}==
 
+
یک خطای نوع یا{{Code|code=TypeError|lang=javascript}} زمانی رخ می‌دهد که شما از مقداری استفاده کنید که از محدوده نوع داده‌های مجاز خارج باشد:
 
 
A <code>TypeError</code> is thrown if you use a value that is outside the range of expected types:
 
 
 
یک خطای نوع یا Type زمانی رخ می‌دهد که شما از مقداری استفاده کنید که از محدوده نوع داده‌های مجاز خارج باشد:
 
  
 
===مثال===
 
===مثال===
var num = ۱;
+
<syntaxhighlight lang="javascript">
 
+
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 (تعیین‌کنندهٔ هویت منبع یکنواخت)==
 
+
یک خطای {{Code|code=URIError|lang=javascript}}زمانی اتفاق می‌افتد که شما از کاراکترهای غیرقابل قبول در یک تابع URI استفاده کنید:
==URI (Uniform Resource Identifier) Error==
 
خطای Uri
 
 
 
A <code>URIError</code> is thrown if you use illegal characters in a URI function:
 
 
 
یک خطای uri زمانی اتفاق می‌افتد که شما از کاراکترهای غیرقابل قبول در یک تابع uri استفاده کنید:
 
  
 
===مثال===
 
===مثال===
 +
<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>
  
 
==ویژگی‌های غیر استاندارد شیء خطا {{به انگلیسی|Error Object}}==
 
==ویژگی‌های غیر استاندارد شیء خطا {{به انگلیسی|Error Object}}==
  
 
+
{{نکته|type=delete|text=موزیلا و ماکروسافت تعدادی ویژگی غیر استاندارد برای شی خطا یا 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.
 
 
 
از این ویژگی‌ها برای وب سایتهای عمومی استفاده نکنید. این ویژگی در تمامی مرورگرها کار نخواهند کرد.
 
  
 
==مرجع کامل خطا در جاوااسکریپت==
 
==مرجع کامل خطا در جاوااسکریپت==
 
 
For a complete reference of the Error object, go to our Complete JavaScript Error Reference.
 
  
 
برای مشاهده مرجع کامل از شی خطا یا Object می‌توانید مقاله ما را تحت عنوان مرجع کامل خطا یا Error در جاوااسکریپت بخوانید.
 
برای مشاهده مرجع کامل از شی خطا یا Object می‌توانید مقاله ما را تحت عنوان مرجع کامل خطا یا Error در جاوااسکریپت بخوانید.

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

میانبر:
الگو:اج
دورهٔ آموزشی جاوااسکریپت
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 در جاوااسکریپت بخوانید.

منابع آموزشی