منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] اصطياد رسالة الخطأ دون يتوقف البرنامج - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] اصطياد رسالة الخطأ دون يتوقف البرنامج (/showthread.php?tid=28706)



اصطياد رسالة الخطأ دون يتوقف البرنامج - sniperjawadino - 20-02-19

سلام إحواني

جئت بسؤال آخر  Big Grin

الكود يحتوي على تلات أسطر
السطر الأول خطأ
التاني و التالت صحيح

ممكن أن أقوم باصطياد رسالة الخطأ لكن بشرط أن لا يتوقف البرنامج
يعني يضهر لي نتائج الأسطر الموالية




RE: اصطياد رسالة الخطأ دون يتوقف البرنامج - elgokr - 21-02-19

الفكرة التى تريد ان تصل لها لم تصل لى حتى الان
حتى اتمكن ان افيدك بالطريقة المناسبة لما تريد فعله

فاتمنا لو تقوم بالتوضيح اكثر

تذكر ان نتائح الرسائل الثلاثة عبارة عن

hh2 || 3  || 4

تحياتى لك
وتمنياتى لك التوفيق



RE: اصطياد رسالة الخطأ دون يتوقف البرنامج - sniperjawadino - 21-02-19

مرحبا أخي elgokr 

نتيجة السطر الأول هي خطأ برمجي
La conversion de la chaîne "hh" en type 'Double' n'est pas valide.

أريد من البرنامج أن يضهر لي الخطأ ثم يكمل النتائج الأخرى


RE: اصطياد رسالة الخطأ دون يتوقف البرنامج - elgokr - 21-02-19

(21-02-19, 03:00 PM)sniperjawadino كتب : مرحبا أخي elgokr 

نتيجة السطر الأول هي خطأ برمجي
La conversion de la chaîne "hh" en type 'Double' n'est pas valide.

أريد من البرنامج أن يضهر لي الخطأ ثم يكمل النتائج الأخرى

جميل هنا تكون الصورة واضحة لما تقصده
فى البداية انت هنا يتقوم بالغاء كود Try


ليصبح الحدث يحتوى على التالى
كود :
       MsgBox("hh" + 2)
       MsgBox(1 + 2)
       MsgBox(2 + 2)


الان لدينا خطاء فى الرسالة الاولى بسبب جمع رقم مع نص


ولتجنب الامر فالك التالى اذا كان الامر من الجمع ثابت غير متغير فيمكنك جعل جود الحدث بهذا الشكل

كود :
       On Error GoTo VNext
       MsgBox("hh" + 2)
VNext:
       MsgBox(1 + 2)
       MsgBox(2 + 2)


طيب الكود غير ثابت ولست تعلم اذا كان اذا كان الخطاء يظهر بالرسالة الاولى او الثانية او اذا كانت فى الاخيرة


فهنا ستجعل كود الحدث بهذا الشكل حتى يتعامل مع جميع الاسطر

كود :
       On Error Resume Next
       MsgBox("hh" + 2)
       MsgBox(1 + 2)
       MsgBox(2 + 2)


وبكده تكون تجنبت جميع الاخطاء التى قد تظهر ...

طيب ماذا تعنى الكود الاول
الكود الاول بيقول اذا كان يوجد خطاء فى اى سطر من الكود ابداء بالذهاب الى سطر التى يحتوى على كلمة VNext

طيب لنقول ان المشكلة فى الخطاء فى الرسالة رقم 2 وليس الاولى
بكده سيكون البرنامج يعيد ام الزهاب الى نفس السطر الذى يحتوى على خطاء ولم يحل المشكلة بل جعل من المشكلة اكثر من مشكلة

طيب الكود الثاني ماذا يعنى
الكود الثاني هو نفس الكود الاول ولكن فكرته بسيطة وهى
عند وجود خطاء عند سطر محدد تخطي السطر واذهب للسطر التالى
والسطر هنا تعنى بداية فتحة الكود الى نهايته مثل For وخلافه التى تعتمد لعى اكثر من سطر

اتمنى ان تكون الفكرة وضحت معك وان الامور اصبح بسيطة معك
وان الطريقة التى ذكرتها تناسبك لما تريد ان تفعله

تحياتى لك
وتمنياتى لك التوفيق



RE: اصطياد رسالة الخطأ دون يتوقف البرنامج - sniperjawadino - 27-02-19

السلام عليكم



الفكرة واضحة أخي elgokr

وكل شيئ أصبح واضح فعلا

جزاك الله كل خير


فقط يبقى السؤال الأساسي هو هل ممكن البرنامج أن يضهر لي الخطأ ثم يكمل النتائج الأخرى

فهذه إصطياد الخطأ دون توقف مهمة البرنامج


RE: اصطياد رسالة الخطأ دون يتوقف البرنامج - elgokr - 27-02-19

وعليكم السلام ورحمة الله وبركاته

بخصوص
إقتباس :هل ممكن البرنامج أن يضهر لي الخطأ ثم يكمل النتائج الأخرى

نعم يمكنك ذلك كل الامر انك تجعل كود الحدث على هذا الشكل دون استخدام Try
كود :
       On Error GoTo ErrorMessage
       MsgBox("hh" + 2)
       MsgBox(1 + 2)

       Exit Sub
ErrorMessage:
       MsgBox(Err.GetException().Message) ' ضع ما تشاء من الرسالة هنا
       Resume Next

ولاحظ جيداً وجود 
كود :
       Exit Sub

اعلى سطر 
كود :
ErrorMessage:

فهو الزامى جداً
بحيث الفكرة انا بقول فى حالة وجود خطاء اذهب الى السطر تحت مسمى [اى كان الاسم]
وخلال هذا السطر يقوم باظهار رسالة طبقاً لما تريد من ثم يعيد متابعة الامر لما بعد الخطاء اى السطر التالي للامر

وطبعاً من غير وجود 
كود :
       Exit Sub

فيعنى عند الانتهاء من الحدث ولا يوجد اى خطاء
سيقوم بعرض الرسالة ويعيد محاول الرجوع لما بعد الخطاء سيجد لا يوجد ثم يقوم انهاء الامر
ولتجنب هذا تم وضع سطر اغلاق الحدث لتجنب هذا الامر

بكده تكون فعلت ما تريد تماماً وكما هو مطرح فى السؤال

تحياتى لك
وتمنياتى لك التوفيق



RE: اصطياد رسالة الخطأ دون يتوقف البرنامج - sniperjawadino - 02-03-19

حقا هذا ما أبحث عنه
نجحت الفكرة
وضع تقييم لمساعدتك هو أقل شكر لك
جزاك الله كل خير


RE: اصطياد رسالة الخطأ دون يتوقف البرنامج - elgokr - 07-03-19

الشكر لله والحمد لله
والحمد لله على كل حال

تحياتى لك
وتمنياتى لك التوفيق