جافا سكريبت try catch
هي أداة أساسية للتعامل مع الأخطاء والاستثناءات في الكود الخاص بك. إنه يوفر آلية للتعامل مع المواقف غير المتوقعة ومنع برنامجهم في الحادث. في هذا الدليل المبتدئ الشامل -سوف تتعامل مع التفاصيل الدقيقة لجافا سكريبت try...catch
الآلية التي تمنحك فهمًا واضحًا لكيفية تعامل الأخطاء برشاقة مع أمثلة مفيدة. لنبدأ!
جدول المحتويات #
الحاجة إلى تجربة #
الأخطاء والأخطاء هي جزء لا مفر منه من البرمجة ، وجافا سكريبت ليست استثناء. تخيل أنك تقوم بإنشاء تطبيق ويب ، وفجأة تتعطل بسبب الإدخالات غير المتوقعة أو مشكلة الشبكة. محبط ، أليس كذلك؟ هناك الأقوياء try...catch
يأتي البيان إلى إنقاذك!
ال try...catch
البيان هو آلية أساسية لعلاج الأخطاء في جافا سكريبت. يمكنك تجنب أخطاء تشغيل الوقت ، وعدم الإطاحة بتطبيقك وتوفير المزيد من تجربة المستخدم السلس.
عندما بدأت البرمجة ، كنت تحت الافتراض الخاطئ بأنه يمكن استبداله بمحاولة إذا كنت مخطئًا في ذلك الوقت. في القسم التالي ، ستكتشف كيف تحاول التقاط وأخيراً العمل للحصول على نقطة مرئية للعرض.
كيف يعمل #
ال try catch
تسبب التعليمات في JavaScript ذلك بتقسيم الكود إلى كتلتين رئيسيتين:
-
جربه: تحتوي هذه الكتلة على الرمز الذي تريد تنفيذه. هذا هو القسم الذي يمكنك توقع أخطاء محتملة فيه. يمكن أن يؤدي جزء من الكود في هذا القسم إلى ارتكاب خطأ أو استثناء. لا يتم تشغيل الأشياء دائمًا كما هو متوقع ، خاصة إذا كان لديك مدخلات مستخدم أو استدعاء مورد خارجي مثل ملف أو واجهة برمجة تطبيقات خارجي. قد تكون واجهة برمجة التطبيقات خاطئة أدناه أو اسم الملف. في هذه الحالات ، تزدهر Node.js/JavaScript على الأخطاء التي يتم اكتشافها في الجزء التالي ، كتلة الصيد.
-
كتلة الصيد: يتم تنفيذ هذه الكتلة فقط إذا كان هناك خطأ في المظهر
try
حاجز. هنا تعتني بالخطأ وتمنع برنامجك من السقوط. على سبيل المثال ، إذا قمت بإنشاء خطأ في الكتابة في اسم مجال واجهة برمجة التطبيقات المسمى ، فسيتم إنشاء هذاTypeError
إذا كنت تستخدم الجلب. إذا لم تكن كتلة الصيد متوفرة ، فيمكنها قتل عملية Node.js أو عرض خطأ على وحدة التحكم في المتصفح.
اختياريا ، يمكنك إدراج كتلة ثالثة. finally
:
finally
حاجز: يتم تنفيذ هذه الكتلة بغض النظر عما إذا كان قد حدث خطأ أم لا. يتم استخدامه لتنظيف الموارد أو تنفيذ الإجراءات التي يجب القيام بها وفقًا لما يحدثtry
وcatch
كتل. على سبيل المثال ، تكون هذه الكتلة مفيدة إذا قمت بإزالة اتصال قاعدة البيانات من مجموعة من الاتصالات. يمكنك استخدام الكود الخاص بك لتنفيذ معاملة قاعدة البيانات. إذا سارت الأمور على ما يرام ، فلن يصل التنفيذ أبدًا إلى جزء الصيد. ومع ذلك ، إذا ضربت الأمور المروحة ، ينتهي التنفيذ في جزء الصيد. الرمز فيfinally
يتم تنفيذ الكتلة دائمًا بحيث يمكن استخدامها لنشر اتصال قاعدة البيانات مرة أخرى إلى التجمع ، بغض النظر عما إذا كان هناك خطأ أم لا.
فيما يلي مخطط تدفق بسيط يتم فيه شرح سير العمل بصريًا try catch finally
Explanation (Mermaid.js – SVG إصدار):
يمكن استخدام Try Catch مع كل من التزامن والرمز غير المتزامن في JavaScript. إذا كنت ترغب في التعرف ، وعد و Async عبر Sync ، رمز JavaScript Async ، يرجى قراءة منشور المدونة هذا. في القسم التالي ، ستكتشف رمز المزامنة مع Try -and -Catch -javaScript.
استخدم المحاولة
لنبدأ بمثال أساسي للاستخدام try catch
مع رمز متزامن. التطبيق العام هو تحليل بيانات JSON التي يمكن أن تسجل خطأ إذا كانت علامة JSON غير صالحة ، لأن المثال تحت JSON يتم إبطاله عن قصد:
const jsonString = '{"key: "value"}';try {
const json = JSON.parse(jsonString);
console.info(json.key);
} catch (err) {
console.error('Error parsing JSON string: ', err.message);
console.error('Error stack: ', err.stack);
console.error('Error name: ', err.name);
console.info(err instanceof SyntaxError);
}
الخطأ في JSON string
هو أن المفتاح يسمى key
ليس لديه إغلاق ”
لذلك سيؤدي هذا دائمًا إلى واحد SyntaxError
إذا JSON.parse
تمت تجربته على سلسلة JSON المحددة. إذا قمت بحفظ الرمز المذكور أعلاه sync.js
وقم بتنفيذها باستخدام Node.js (أو قم بتنفيذها على وحدة التحكم في المتصفح). سوف يؤدي إلى هذا ::
دعونا نحلل ما حدث هنا. أولاً قمت بتعيين سلسلة JSON غير صالحة في const
مُسَمًّى jsonString
. التالي JSON.parse
. ثم حاول تسجيلها key
لم يتحقق هذا الخط كخط هذا الكائن JSON.parse
يلقي خطأ.
في كتلة الصيد ، ترتدي الخطأ بالاسم err
ثم قم بتسجيل رسالة الخطأ كخطأ في وحدة التحكم. ثم قم بتسجيل المكدس واسم الخطأ كخطأ في وحدة التحكم. في النهاية ، تحقق مما إذا كان الخطأ هو مثيل من النوع SyntaxError
سوف يؤدي ذلك إلى صحيح.
إذا كنت تريد أن تصل الرمز أبدًا إلى كتلة الصيد التي يمكنك استخدامها const jsonString = '{"key”: "value"}';
كما الخط الأول. في الجزء التالي ، سترى مثالًا على JavaScript غير المتزامن مع Async و Darted.
استخدم المحاولة
يتضمن الكود غير المتزامن في JavaScript عمليات لا يتم تنفيذها على الفور.
كيفية استدعاء البيانات من API. يستخدم try catch
مع رمز غير متزامن
يتطلب فهم كيفية عمل الوعود. يمكنك أيضًا القراءة عن .catch وقراءة و .finaly
يمكن إضافة هذا إلى الوعد. ولكن في الوقت الحاضر ، من الشائع استخدام Async promise().catch().finally()
بناء الجملة. وبالتالي فإن الكود التالي مع الأم fetch
API لإخراج بعض المستخدمين ولكن مع منعطف (خطأ في القراءة):
async function getUser() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com1/users/1');
console.log('User data:', await response.json());
} catch (err) {
console.error('Error fetching user:', err.message);
console.error('Error stack: ', err.stack);
console.error('Error name: ', err.name);
console.info(err instanceof TypeError);
}
}getUser();
لتوضيح ذلك مسبقًا ، كان بإمكانهم استخدامه [IIFE]((من المتوقع مع Async للحفاظ على الأشياء أعلاه ، يستخدم وظيفة تسمي getUser
.
ال getUser
تبدأ الوظيفة غير المتزامنة مع الحصول على مكالمة جلب. المشكلة هي أن اسم المجال خاطئ. لديها إضافية 1
بعد المرفقة .com
هذا يعني دائمًا أن اسم المجال لم يتم حله. وهذا يعني أن التنفيذ لن يصل أبدًا إلى السطر الذي يتم فيه تسجيل بيانات المستخدم.
سيكون دائما في الأرض catch
قطاع وتسجيل رسالة الخطأ ثم المكدس والاسم. ثم يتم التحقق مما إذا كان مثيل الخطأ TypeError
سوف يؤدي ذلك إلى صحيح. يمكنك حفظ الرمز المذكور أعلاه كما async.js
وركض مع العقدة 18.+
تمت إضافة المكالمة الأصلية إلى Node.js بدون علامة تجريبية 18.0.0
. يصبح:
يمكنك أيضًا القيام بذلك على وحدة التحكم في متصفحك ، والتي توفر نفس النتيجة أعلاه. في القسم التالي ، ستكتشف كيفية حظر الهاتف الخلوي أخيرًا ، والذي يتم تنفيذه دائمًا بغض النظر عن حدث الخطأ الذي يحدث.
حاول الصيد وأخيراً #
جافا سكريبت try...catch
يدعم أيضًا اختياري finally
حاجز. ال finally
يتم تنفيذ الكتلة دائمًا ، بغض النظر عما إذا كان حدث خطأ أم لا. هذا مفيد لمهام التنظيف أو الإغلاق. أدناه هو نفس المثال لما ورد أعلاه JSON.parse
مع الخطأ يضيف أ finally
كتلة في النهاية:
const jsonString = '{"key: "value"}';try {
const json = JSON.parse(jsonString);
console.info(json.key);
} catch (err) {
console.error('Error parsing JSON string: ', err.message);
console.error('Error stack: ', err.stack);
console.error('Error name: ', err.name);
console.info(err instanceof SyntaxError);
} finally {
console.info('This will always execute');
}
إذا قمت بحفظ هذا الملف كـ sync-finally.js
وقم بتنفيذها باستخدام Node.js ، سيؤدي ما يلي:
الفرق الرئيسي هنا هو ذلك finally
جزء مع الخطأ. حتى لو لم يكن هناك خطأ في ذلك finally
سوف تعمل الكتلة دائما. ال finally
يمكن أيضًا استخدام الكتلة في async
مثال رمز مع async-await
. في مستودع github هذا ، ستجد جميع اختبارات الكود. إذا كنت سعيدًا باستخدام Axios بدلاً من الجلب ، فستجد مثالًا مشابهًا مع Axios Timeout.
يمكنك أيضًا لف الخطأ أو الاستثناء في استثناءك المخصص. على سبيل المثال ، إذا قامت واجهة برمجة التطبيقات بإرجاع رمز خطأ معين لكلمة مرور خاطئة مثل الرمز 5522
ثم يمكنك التحقق مما إذا كان الخطأ يحتوي على هذا الرمز ولفه في مستخدم محدد أكثر WrongPasswordError
وإعادة التفكير في ذلك. يمكنك استخدامها throw
الكلمة الرئيسية لرمي خطأك أو استثناء. يمكن أن تكون هذه مشكلة لنشر مدونة آخر.
دبلوم #
JavaScripts try catch
البيان هو أداة لا تقدر بثمن لعلاج الأخطاء بأمان. إنه يوفر طريقة منظمة لتوقع وإدارة الاستثناءات لمنع الكود الخاص بك من السقوط وضمان تجربة مستخدم أفضل.
من خلال فهم مبادئ try catch
وإذا كنت تستخدمك بعناية ، فيمكنك إنشاء تطبيقات JavaScript قوية وموثوقة. تذكر استخدام ذلك finally
منعه للتنظيف الأساسي ولا تخجل من الاستخدام try catch
سواء في الكود المتزامن وغير المتزامن. في هذا الدليل ، تعلمت كيفية استخدام Try … catch واستخدمت أخيرًا في المزامنة ورمز JavaScript غير المتزامن مع أمثلة مفيدة.
تدرب وفحص السيناريوهات المختلفة لتصبح علاجات الأخطاء لتصبح سيد إدارة الأخطاء في جافا سكريبت. عناق قوة try catch
أخيرًا ، تعاملت الكود الخاص بك بالأناقة والمرونة. ترميز سعيد!