جسٹاگرافک خطا - تھر اور تری تو کیچ

try 语句使您能够测试代码块中的错误。

catch 语句允许您处理错误。

throw کلمه به شما اجازه می‌دهد که خطای سفارشی ایجاد کنید.

finally 使您能够执行代码,在 try 和 catch 之后,无论结果如何。

错误总会发生!

当执行 JavaScript 代码时,会发生各种错误。

错误可能是程序员的编码错误,由错误输入引起的错误,或者由于其他不可预见的问题。

مثال

在本例中,我们通过 adddlert 编写警告代码来故意制造了一个错误:

<script> تروی (ارور) { پیغام جاگرت ڈالتی ہے } کچ (ارور) { دسمنی پیغام جاگرت ڈالتی ہے } </script>

آپ خود پرکشش کریں

جیوسکریپٹ جیوسکریپٹ کا پیغام جاگرت ڈالتی ہے، کیچ میں پائی جاتی ہے اور اس کا پیغام بندل کیا جاتا ہے

جیوسکریپٹ کا جیوسکریپٹ تری اور کیچ

try کوئی بغیر کسی پیغام کی طرح جاگرت ڈالتی ہے، جو کوئی پیغام جاگرت ڈالنے کیلئے کوڈ بلوک فراہم کرتی ہے

catch کوئی بغیر کسی پیغام کی طرح جاگرت ڈالتی ہے، اگر جیوسکریپٹ کا کسی پیغام جاگرت ڈالا

کلمات معنوی JavaScript try و catch کوئی بغیر کسی پیغام کی طرح جاگرت ڈالتی ہے

تروی (ارور) {
     تست کیلئے کوڈ بلوک فراہم کیا گیا ہے
}
 کچ (ارور) {
     غیر صحیح کا مطلب بنانے والا کوڈ بلوک
} 

جسٹرکسٹ جیوسکریپٹ بغیر کسی پیغام کی طرح جاگرت ڈالتی ہے

وقتی خطا رخ می‌دهد، JavaScript معمولاً متوقف شده و پیغام خطایی ایجاد می‌کند.

عبارت فنی به این صورت توضیح داده می‌شود:JavaScript استثنا (خطا) ایجاد می‌کند (خطا ایجاد می‌کند).

JavaScript در واقع یک استثنا (خطا) با دو ویژگی ایجاد می‌کند: شیء Error:name و message.

کلمه throw

throw کلمه به شما اجازه می‌دهد که خطای سفارشی ایجاد کنید.

技术上 شما می‌توانیداستثنا ایجاد کردن (ایجاد خطا).

استثنا می‌تواند یک رشته JavaScript، عدد، بولین یا شیء باشد:

throw "Too big";    // متن استثنا ایجاد می‌شود
throw 500;          // استثنا ایجاد می‌شود

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

مثال تأیید ورودی

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

این استثنا (خطا) توسط عبارت catch گرفته شده و پیغام خطای سفارشی نمایش داده می‌شود:

<!DOCTYPE html>
<html>
<body>
<p>لطفاً عددی بین 5 و 10 وارد کنید:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">ورودی را تست کنید</button>
<p id="message"></p>
<script>
function myFunction() {
    var پیغام، x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    تروی (ارور) { 
        if(x == "") throw "خالی";
         if(isNaN(x)) throw "عدد نیست";
         x = Number(x);
        if(x < 5) throw "خیلی کوچک";
        if(x > 10) throw "بسیار بزرگ";
    }
    کچ (ارور) {
        پیغام.innerHTML = "ورودی است " + خطا;
    }
}
</script>
</body>
</html> 

آپ خود پرکشش کریں

تأیید HTML

این کد تنها یک مثال است.

مرورگرهای مدرن معمولاً JavaScript را با تأییدهای داخلی HTML ترکیب می‌کنند، از طریق استفاده از قوانین تأیید پیش‌تعریف شده که در ویژگی‌های HTML تعریف شده‌اند:

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

شما در بخش‌های بعدی این آموزش بیشتر درباره تأیید فرم‌ها یاد خواهید گرفت.

کلمه finally

finally کلمه به شما اجازه می‌دهد که کدی را در پس از try و catch اجرا کنید، بدون توجه به نتیجه:

تروی (ارور) {
     // کد بلوکی برای تست
}
 کچ (ارور) {
     // کد بلوکی برای مدیریت خطا
} 
finally {
     // کد بلوکی که به هر صورت اجرا می‌شود
}

مثال

function myFunction() {
    var پیغام، x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    تروی (ارور) { 
        if(x == "") throw "خالی است";
        if(isNaN(x)) throw "عدد نیست";
         x = Number(x);
        if(x >  10) throw "خیلی بزرگ";
        if(x <  5) throw "خیلی کوچک";
    }
    کچ (ارور) {
        message.innerHTML = "خطا: " + err + ".";
    }
    finally {
        document.getElementById("demo").value = "";
    }
}

آپ خود پرکشش کریں

شیء Error

شیء error داخلی JavaScript دارای ویژگی‌های داخلی برای ارائه اطلاعات خطا است.

شیء error دو ویژگی مفید ارائه می‌دهد:name و message.

ویژگی‌های شیء Error

ویژگی توضیح
name تنظیم یا بازگشت نام خطا
message تنظیم یا بازگشت پیام خطا (یک رشته)

Error Name Values

ویژگی name متغیر error شش مقادیر مختلف دارد:

نام خطا توضیح
EvalError خطایی که در داخل تابع eval() رخ داده است
RangeError خطای بیش از حد عددی رخ داده است
ReferenceError استناد غیرقانونی رخ داده است
SyntaxError خطای دستورالعمل رخ داده است
تریپل اریئر خطای نوع رخ داده است
اری اریئر خطاهایی که در encodeURI() رخ داده است

در اینجا شش نوع مختلف از این مقادیر را برای شما توضیح می‌دهم.

خطای eval

EvalError اشاره به خطای داخل تابع eval() نمی‌اندازد.

نسخه‌های به‌روز JavaScript هیچ EvalErrorلطفاً SyntaxError جایگزین کنید.

خطای دامنه

RangeError در زمان استفاده از عدد خارج از دامنه معتبر ارائه خواهد شد.

مثلاً: شما نمی‌توانید تعداد دفعات اعشار عدد را به 500 تنظیم کنید.

مثال

وار نمبر = 1;
تروی (ارور) {
    num.toPrecision(500);   // عدد نمی‌تواند 500 عدد اعشار داشته باشد
 }
کچ (ارور) {
    دوکومنٹ گیت آئیڈی بیلیو ('demo').اینرایل ایکسیووٹ = ارور.نام;
} 

آپ خود پرکشش کریں

خطای استناد

اگر شما از متغیری که قبلاً اعلام نشده است استفاده کنید (استناد) ReferenceError ارائه خواهد شد:

مثال

var x;
تروی (ارور) {
    x = y + 1;   // y قابل استناد نیست (استفاده)
 }
کچ (ارور) {
    دوکومنٹ گیت آئیڈی بیلیو ('demo').اینرایل ایکسیووٹ = ارور.نام;
} 

آپ خود پرکشش کریں

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

اگر شما کدی با خطای دستورالعمل محاسبه کنید، SyntaxError پر رکھا گیا:

مثال

تروی (ارور) {
    eval("alert('Hello')");   // کمبود ' می‌تواند منجر به خطا شود
}
کچ (ارور) {
     دوکومنٹ گیت آئیڈی بیلیو ('demo').اینرایل ایکسیووٹ = ارور.نام;
} 

آپ خود پرکشش کریں

خطا در نوع

اگر وضوح شما در دامنه مورد انتظار نیست، تریپل اریئر پر رکھا گیا:

مثال

وار نمبر = 1;
تروی (ارور) {
    نمبر اپر کی اور;   // آپ نہیں اعداد کو بچولی کرسکتے
 }
کچ (ارور) {
    دوکومنٹ گیت آئیڈی بیلیو ('demo').اینرایل ایکسیووٹ = ارور.نام;
} 

آپ خود پرکشش کریں

اری اریئر

اگر آپ نے یوری فنکشن میں غیر مجاز اشارتی چارجر استعمال کیا تو اری اریئر پر رکھا گیا:

مثال

تروی (ارور) {
    ڈینکوڈ اوری ('%%%');   // آپ نہیں اس فیصدوں کو یوری انکوڈنگ کرسکتے ہیں
 }
کچ (ارور) {
    دوکومنٹ گیت آئیڈی بیلیو ('demo').اینرایل ایکسیووٹ = ارور.نام;
} 

آپ خود پرکشش کریں

غیر معیاری جیوسٹارک بند کی اشارتی جیوسٹارک بند

مو زیلا اور میکروسافٹ نے غیر معیاری اشارتی جیوسٹارک بند کی تعریف کی ہے:

  • فائل نمبر (مو زیلا)
  • لائن نمبر (مو زیلا)
  • کولم نمبر (مو زیلا)
  • استیک (مو زیلا)
  • ڈسکریپشن (مایکروسافٹ)
  • نمبر (مایکروسافٹ)

یہ انیٹ کا استعمال پبلک ویب سائٹوں میں نہ کریں۔ یہ انیٹ تمام براوزروں میں کام نہیں کرتا