این try
دستور به شما امکان می دهد مجموعه ای از کد را برای خطاها آزمایش کنید.
این catch
دستور به شما امکان می دهد خطا را کنترل کنید.
این throw
دستور به شما امکان می دهد خطاهای سفارشی ایجاد کنید.
این finally
دستور به شما امکان می دهد بدون توجه به نتیجه ، پس از امتحان و گرفتن کد ، کد را اجرا کنید.
خطاها اتفاق خواهد افتاد!
هنگام اجرای کد JavaScript ، خطاهای مختلفی رخ می دهد.
خطاها می توانند خطاهای کدنویسی ساخته شده توسط برنامه نویس ، خطاهای ناشی از ورودی اشتباه و سایر موارد غیرقابل پیش بینی باشند.
مثال
در این مثال ما “هشدار” را به اشتباه “adddlert” نوشتیم تا عمدا خطایی ایجاد کنیم:
<p id="demo"></p> <script> try { adddlert("Welcome guest!"); } catch(err) { document.getElementById("demo").innerHTML = err.message; } </script>
جاوا اسکریپت adddlert را به عنوان یک خطا می گیرد و کد گرفتن را برای کنترل آن اجرا می کند.
جاوا اسکریپت را امتحان کنید و بگیرید
این try
دستور به شما امکان می دهد یک بلوک از کد را تعیین کنید تا هنگام اجرا از نظر خطا آزمایش شود.
این catch
دستور به شما امکان می دهد در صورت بروز خطا در بلوک try ، یک بلوک از کد برای اجرا تعریف کنید.
دستورات جاوا اسکریپت try
و catch
بصورت جفت می آیند:
try { Block of code to try } catch(err) { Block of code to handle errors }
جاوا اسکریپت خطاها را پرتاب می کند
وقتی خطایی رخ می دهد ، JavaScript به طور معمول متوقف می شود و پیام خطایی ایجاد می کند.
اصطلاح فنی برای این عبارت است: JavaScript یک استثنا را ایجاد می کند (یک خطا را پرتاب می کند) .
جاوا اسکریپت در واقع یک شی Er Error با دو ویژگی ایجاد می کند: نام و پیام .
بیانیه پرتاب
این throw
دستور به شما امکان می دهد یک خطای سفارشی ایجاد کنید.
از نظر فنی می توانید یک استثنا را پرتاب کنید (خطا را پرتاب کنید) .
استثنا می تواند JavaScript String
، a Number
، a Boolean
یا an باشد Object
:
throw "Too big"; // throw a text throw 500; // throw a number
اگر throw
همراه با try
و استفاده می کنید catch
، می توانید جریان برنامه را کنترل کرده و پیام های خطای سفارشی ایجاد کنید.
مثال اعتبار سنجی ورودی
این مثال ورودی را بررسی می کند. اگر مقدار اشتباه باشد ، یک استثنا (خطا) پرتاب می شود.
استثنا (خطا) توسط عبارت 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() { const message = document.getElementById("p01"); message.innerHTML = ""; let 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
کد بالا فقط یک مثال است.
مرورگرهای مدرن اغلب از ترکیبی از اعتبار سنجی JavaScript و داخلی با استفاده از قوانین اعتبار سنجی از پیش تعریف شده تعریف شده در ویژگی های HTML استفاده می کنند:
<input id="demo" type="number" min="5" max="10" step="1">
می توانید اطلاعات بیشتری در مورد اعتبار سنجی فرم ها را در فصل بعدی این آموزش بیاموزید.
بیانیه سرانجام
این finally
دستور به شما امکان می دهد بدون توجه به نتیجه ، پس از امتحان و گرفتن کد ، کد را اجرا کنید:
نحو
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() { const message = document.getElementById("p01"); message.innerHTML = ""; let 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 = ""; } }
شی Er خطا
جاوا اسکریپت یک شی error خطای داخلی دارد که هنگام بروز خطا اطلاعات خطا را ارائه می دهد.
شی error خطا دو ویژگی مفید را ارائه می دهد: نام و پیام.
خواص شیject خطا
خطای عیب
EvalError
نشان می دهد یک خطا در تابع eval ().
نسخه های جدید JavaScript EvalError را پرتاب نمی کند. به جای آن از SyntaxError استفاده کنید.
خطای محدوده
RangeError
اگر از عددی استفاده کنید که خارج از محدوده مقادیر قانونی باشد ، A پرتاب می شود.
به عنوان مثال: شما نمی توانید تعداد ارقام قابل توجه یک عدد را روی 500 تنظیم کنید.
مثال
let num = 1; try { num.toPrecision(500); // A number cannot have 500 significant digits } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خطای مرجع
ReferenceError
پرتاب می شود در صورت استفاده از (مرجع) یک متغیر است که اعلام نشده است:
مثال
let x = 5; try { x = y + 1; // y cannot be used (referenced) } catch(err) { document.getElementById("demo").innerHTML = err.name; }
اشتباه نوشتاری
A SyntaxError
اگر سعی کنید کد را با خطای نحوی ارزیابی کنید ، پرتاب می شود.
مثال
try { eval("alert('Hello)"); // Missing ' will produce an error } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خطا را تایپ کنید
TypeError
اگر از مقداری خارج از محدوده انواع مورد انتظار استفاده کنید ، A پرتاب می شود:
مثال
let num = 1; try { num.toUpperCase(); // You cannot convert a number to upper case } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خطای URI (شناسه منبع یکنواخت)
URIError
اگر از کاراکترهای غیرقانونی در عملکرد URI استفاده کنید ، A پرتاب می شود:
مثال
try { decodeURI("%%%"); // You cannot URI decode percent signs } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خصوصیات شیject خطای غیر استاندارد
Mozilla و Microsoft برخی از خصوصیات شی properties خطای غیر استاندارد را تعریف می کنند:
fileName (موزیلا)
خط شماره ستون (موزیلا)
تعداد (موزیلا) شرح
پشته (موزیلا)
شماره (مایکروسافت) شماره (مایکروسافت)
از این خصوصیات در وب سایت های عمومی استفاده نکنید. آنها در همه مرورگرها کار نمی کنند.