مقدمة
هناك العديد من أنواع الأخطاء التي قد تحدث في تطبيقات node.js. على سبيل المثال: عند حدوث خطأ في بناء الجملة أو خطأ في وقت التشغيل ، سيتم تشغيل خطأ JavaScript ؛ عند محاولة الوصول إلى ملف غير موجود أو لا يتم الوصول إليه ، سيتم تشغيل خطأ في النظام ؛ بالإضافة إلى أخطاء JavaScript وأخطاء خطأ النظام ، يمكن للمستخدمين أيضًا تخصيص الأخطاء.
1. سوء التصنيف
Node.js عبارة عن منصة وقت تشغيل JavaScript ، وأخطاء التطبيق الخاصة بها كلها مثيل Error أو مثيل فئة فرعية Error .
في تطبيقات Node.js ، هناك أربعة أخطاء محتملة:
1. أخطاء JavaScript القياسية ، مثل:
<EvalError> : تم طرحه عند فشل مكالمات eval()
<SyntaxError> : تم طرحه عند استخدام بناء جملة JavaScript غير القانوني
<RangeError> : تم طرحه عندما لا تكون القيمة ضمن النطاق المحدد
<ReferenceError> : يتم إلقاؤه عند استخدام متغير غير محدد
<TypeError> : عند تمرير معلمة نوع الخطأ
<URIError> : تم طرحه عند استخدام وظيفة URI عالمية بشكل غير صحيح
2. خطأ النظام. يتم تشغيل هذا النوع من الخطأ بواسطة النظام الأساسي ، مثل محاولة فتح ملف غير موجود ، ومحاولة إرسال البيانات من خلال Soket مغلقة ، إلخ.
3. الأخطاء المخصصة ، يتم تشغيل هذه الأخطاء من قبل المستخدم في رمز التطبيق.
4. خطأ التأكيد. عندما ينتهك الرمز المنطق القانوني ، يتم تشغيل هذا النوع من الخطأ بواسطة وحدة assert Node.js.
2. أخطاء جافا سكريبت وأخطاء النظام
2.1 أخطاء JavaScript والأخطاء المخصصة
يتم توفير أخطاء JavaScript القياسية من قبل لغة JavaScript ، مما يشير إلى أخطاء بناء الجملة أو الاستخدام غير السليم لواجهة برمجة التطبيقات. جميع الأخطاء هي مثيل لفئة Error ، في حين يتم إنشاء أخطاء JavaScript القياسية باللغة نفسها عند حدوث خطأ.
عند تخصيص الأخطاء ، استخدم المنشئ لإنشاء مثيل:
> رمي خطأ جديد ('حدث خطأ ، هذا هو رسالة الخطأ') في Emitone (events.js: 82: 20) في replserver.emit (events.js: 169: 7) في replserver.interface._online (readline.js: 210: 10) في replserver.interface._line (readline.js: 549: 8) at represerver.interface. على النحو الوارد أعلاه ، قمنا بتخصيص خطأ وألقينا الخطأ باستخدام الكلمة الرئيسية الرمي. في كائن الخطأ هذا ، يتضمن message الخطأ stack معلومات الخطأ. بعد التقاط الاستثناء ، يمكن الوصول إلى هذه المعلومات من خلال الخصائص التالية:
1. error.message - رسالة خطأ
2. error.stack - معلومات تتبع مكدس الأخطاء
بالإضافة إلى خصائص مثيل الخطأ نفسه ، يمكنك أيضًا تخصيص بعض خصائص الخطأ. على سبيل المثال ، تخصيص حالة خاصية تمثل الحالة:
var error = خطأ جديد ('الصفحة التي قمت بزيارتها غير موجودة') ؛ error.status = 404 ؛2.2 خطأ النظام
أخطاء النظام هي امتداد لكائنات Error JavaScript ، والتي تمثل الأخطاء التشغيلية التي يمكن للبرامج معالجتها ، ويتم إنشاء رسائل الخطأ هذه على مستوى النظام. بالإضافة إلى السمات في مثيل Error ، يتضمن مثيل خطأ النظام أيضًا السمات التالية:
1. error.syscall - سلسلة تمثل معلومات استدعاء النظام الفاشلة
2. error.errno - رمز خطأ عدد صحيح
3. error.code - يمثل سلسلة خطأ ، وعادة ما تبدأ بالحرف الرأسمالي E
3. استثناء التقاط
تعتمد Node.js أساسًا للبرمجة القائمة على الحدث وغير المتزامن ، مما يعني أنه لا يمكن أن يلتزم try / catch بالأخطاء التي تحدث عند المعالجة بشكل غير متزامن. في هذه الحالة ، يمكننا استخدام الطريقتين التاليتين لالتقاط الخطأ أو تمريره:
استثناء التقاط في وظيفة رد الاتصال Node.js
يحتوي Node.js على العديد من واجهات برمجة التطبيقات غير المتزامنة ، والتي تتم معالجتها لاحقًا من خلال رد اتصال وظيفة رد الاتصال. في حالة حدوث خطأ ، سيتم عادةً تضمين كائن Error في المعلمة الأولى من وظيفة callback ؛ في حالة حدوث أي خطأ ، ستكون المعلمة الأولى null . يحب:
const fs = require ('fs') ؛ fs.ReadFile ('ملف غير موجود' ، (err ، data) => {if (err) {console.error ('read file error' ، err) ؛ return ؛} // معالجة أخرى}) ؛معالجة الأخطاء القائمة على الحدث
إذا كان الكائن عبارة عن EventEmitter ، فيمكن التقاط الخطأ والتعامل معه من خلال的'error' للكائن:
const net = require ('net') ؛ const connection = net.connect ('localHost') ؛ // إضافة معالج "خطأ" إلى الدفق: connection.on ('error' ، (err) => {// {erens in ern erint erint)لخص
ما سبق هو ملخص لبعض أنواع الأخطاء في node.js. إذا تمكنت من فهم أنواع الأخطاء في node.js ، فيمكنك مساعدتنا في التعامل بشكل أفضل مع الأخطاء والاستثناءات. آمل أن يكون محتوى هذه المقالة مفيدًا للجميع.