أخطاء JavaScript
ارمي وحاول ... امسك ... أخيرًا
تحدد العبارة try
كتلة التعليمات البرمجية للتشغيل (للمحاولة).
تحدد العبارة catch
كتلة رمز للتعامل مع أي خطأ.
تحدد العبارة finally
كتلة التعليمات البرمجية ليتم تشغيلها بغض النظر عن النتيجة.
تحدد العبارة throw
خطأ مخصص.
سيحدث أخطاء!
عند تنفيذ كود JavaScript ، يمكن أن تحدث أخطاء مختلفة.
يمكن أن تكون الأخطاء أخطاء ترميزية قام بها المبرمج وأخطاء ناتجة عن إدخال خاطئ وأشياء أخرى غير متوقعة.
مثال
في هذا المثال ، أخطأنا في كتابة كلمة "تنبيه" كـ "adddlert" لإنتاج خطأ عمدًا:
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
يمسك JavaScript adddlert كخطأ ، وينفذ كود الصيد للتعامل معه.
جافا سكريبت جرب وامسك
تسمح try
لك العبارة بتحديد كتلة من التعليمات البرمجية ليتم اختبارها بحثًا عن الأخطاء أثناء تنفيذها.
تسمح catch
لك العبارة بتحديد كتلة من التعليمات البرمجية ليتم تنفيذها ، في حالة حدوث خطأ في كتلة try.
تأتي عبارات JavaScript try
في catch
أزواج:
try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}
جافا سكريبت تتسبب في حدوث أخطاء
عند حدوث خطأ ، ستتوقف JavaScript بشكل طبيعي وتنشئ رسالة خطأ.
المصطلح التقني لهذا هو: جافا سكريبت سوف تطرح استثناء (خطأ) .
ستقوم JavaScript بالفعل بإنشاء كائن خطأ بخاصيتين : الاسم والرسالة .
بيان الرمي
تسمح throw
لك العبارة بإنشاء خطأ مخصص.
من الناحية الفنية ، يمكنك طرح استثناء (طرح خطأ) .
يمكن أن يكون الاستثناء JavaScript String
أو a أو Number
a Boolean
أو 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 المدمج ، باستخدام قواعد التحقق المحددة مسبقًا المحددة في سمات 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 = "";
}
}
كائن الخطأ
يحتوي JavaScript على كائن خطأ مدمج يوفر معلومات الخطأ عند حدوث خطأ.
يوفر كائن الخطأ خاصيتين مفيدتين: الاسم والرسالة.
خصائص كائن الخطأ
ملكية | وصف |
---|---|
اسم | تعيين أو إرجاع اسم خطأ |
رسالة | تعيين أو إرجاع رسالة خطأ (سلسلة) |
قيم اسم الخطأ
يمكن إرجاع ست قيم مختلفة بواسطة خاصية اسم الخطأ:
اسم الخطأ | وصف |
---|---|
EvalError | حدث خطأ في دالة EVAL () |
RangeError | حدث رقم "خارج النطاق" |
المرجع خطأ | حدث مرجع غير قانوني |
خطأ في بناء الجملة | حدث خطأ في بناء الجملة |
خطأ مطبعي | حدث خطأ في النوع |
URIError | حدث خطأ في encodeURI () |
يتم وصف القيم الست المختلفة أدناه.
تقييم الخطأ
يشير الحرف EvalError
إلى خطأ في دالة EVAL ().
لا تتسبب الإصدارات الأحدث من JavaScript في خطأ EvalError. استخدم SyntaxError بدلاً من ذلك.
خطأ في النطاق
يتم طرح A RangeError
إذا كنت تستخدم رقمًا خارج نطاق القيم القانونية.
على سبيل المثال: لا يمكنك تعيين عدد الخانات المميزة لرقم على 500.
مثال
let num = 1;
try {
num.toPrecision(500); // A number cannot have 500
significant digits
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
خطأ في المرجع
يتم طرح A 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;
}
خطأ مطبعي
يتم طرح A TypeError
إذا استخدمت قيمة خارج نطاق الأنواع المتوقعة:
مثال
let num = 1;
try {
num.toUpperCase(); // You cannot convert a number
to upper case
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
خطأ URI (معرف الموارد المنتظم)
يتم طرح A URIError
إذا استخدمت أحرفًا غير قانونية في دالة URI:
مثال
try {
decodeURI("%%%"); // You cannot URI decode
percent signs
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
خصائص كائن خطأ غير قياسي
تحدد Mozilla و Microsoft بعض خصائص كائن الخطأ غير القياسية:
اسم الملف (موزيلا)
رقم السطر (موزيلا)
العمود رقم (موزيلا)
المكدس (موزيلا)
الوصف (مايكروسوفت)
رقم (مايكروسوفت)
لا تستخدم هذه الخصائص في مواقع الويب العامة. لن تعمل في جميع المتصفحات.
مرجع الخطأ الكامل
للحصول على مرجع كامل لكائن الخطأ ، انتقل إلى مرجع خطأ JavaScript الكامل .