تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[عنوان معدل] كيفية تخطي نافذة الخطأ Error Dialog في الدوت نت
#1
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الأنبياء والمرسلين اما بعد
في هذا الدرس سوف تتعلم

1. تفهم كيف تعمل الأخطاء
2.كيف تتفدى الأخطاء الغير متوقعة
3. تتخطها وتضع كود بنفسك



النقطة الأولى :

الأخطاء في برامج الدوت نت ترسل عبر jit اختصار لعبارة (just in time debugger) عندما يحصل خطأ فهوى يحصل في Thread اي جزء من عمليات البرنامج عندما يحدث اي خطأ ينفذ البرنامج المطلوب منة في الأصل وهو اخراج مربع الخطأ
[ATTACH=CONFIG]216[/ATTACH]
نلاحظ ما كتب في الصورة من فوق "حدث استثناء غير معالج" عموما كون الرسالة بالعربية او اي لغة يرجع الى لغة الدوت نت المثبتة
إذا يخبرنا البرنامج انة خطأ غير معالج وهذا الصندوق لأنك لم تضع علاجا او بالأصح لم تحدد ماذا سيفعل البرنامج عندها ولأنك لم تحدد فالمنقح تلقئيا اخرج هذا المربع

النقطة الثانية :

لا يعني استخدامك ل Try ان برنامجك خالي من الأخطأ احينا تحدث اخطاء غير متوقعة

الحل :

ببساطة لو ركزت في الكلام الذي فوق ستكتشف ما الحل , ذكرت انة يحدث الخطأ في Thread إذا هل يوجد Event لهذا الخطأ
نعم كما يوجد حدث button_click يوجد حدث ThreadException لنتعرف اكثر على هذا الحدث :
اولا الصيغة الحدث
vb.net
كود :
[/FONT][/COLOR]    Public Sub [color=#000000][FONT=Consolas]ThreadException[/FONT][/color](ByVal sender As Object, ByVal e As ThreadExceptionEventArgs)




    End Sub
[COLOR=#000000][FONT=Consolas]
C#.net
كود :
[/FONT][/COLOR]      static void ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            
        }
[COLOR=#000000][FONT=Consolas]
طيب هذا الحدث كيف نستخدمة (لاتستعجل اي شئ اصبر وقرأ لنهاية الشرح)
e تعبر عن الخطأ فمثلا نريد البرنامج يخرج لنا رسالة بسيطة تخبرنا ما هو الخطأ
الكود
vb.net
كود :
[/FONT][/COLOR]    Public Sub ThreadException(ByVal sender As Object, ByVal e As ThreadExceptionEventArgs)
        MsgBox(e.Exception.Message, MsgBoxStyle.Critical, "Error")


    End Sub
[COLOR=#000000][FONT=Consolas]
C#.net
كود :
[/FONT][/COLOR]static void ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            MessageBox.Show(e.Exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
[COLOR=#000000][FONT=Consolas]
وهكذا اي شئ تريد عملة ممكن ان تجعل البرنامج يخرج او يرسل لك الخطأ بالإيميل او لا يعمل شئ
طيب اين نضع هذا الأمر
vb.net
ربط الحدث هذا الأمر يتم كتالي
كود :
[/FONT][/COLOR]        AddHandler Application.ThreadException, AddressOf ThreadException[COLOR=#000000][FONT=Consolas]
ضع هذا الكود في Form_load او اي مكان تريد ثم ضع الأمر هذا في اي مكان اخر وهذا مثال بالصور
[ATTACH=CONFIG]217[/ATTACH]
الكود كامل
كود :
[/FONT][/COLOR]    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles My****.Load
        AddHandler Application.ThreadException, AddressOf ThreadException
    End Sub
    Public Sub ThreadException(ByVal sender As Object, ByVal e As ThreadExceptionEventArgs)
        MsgBox(e.Exception.Message, MsgBoxStyle.Critical, "Error")
    End Sub
[COLOR=#000000][FONT=Consolas]
وبكذا تكون قد قضيت على النافذة جرب ان تشغل البرنامج خارج الفجوال ستجد ظهور الرسالة
Big Grin
C#.NET
اسهل بكثير افتح ملف "program.cs"
ستجد التالي :
كود :
using System;
using System.Collections.Generic;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
هذة هي نقطة البداية لبرامج السي شارب
وهذا هو امر التشغيل
كود :
Application.Run(new Form1());
وهو يخبرك ان البرنامج سيبدأ تشغيل الفورم1
دع قبلة كود الإسناد :
كود :
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(ThreadException);
وتضع الكود المذكور اعلى
كود :
static void ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            MessageBox.Show(e.Exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
ليصبح كامل الملف
كود :
using System;
using System.Collections.Generic;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(ThreadException);
            Application.Run(new Form1());
        }


        static void ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            MessageBox.Show(e.Exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}
لأن جرب
ويمكنك وضع اي كود تريدة
Wink
ارجو ان تكون قد استدفدت وفهمت الكود لا نقلتة فقط وما كان من خطأ فمني والشيطان وما كان من صواب فمن الله وحدة

والى القاء في دورس قادمة ان شاء الله



بالتوفيق Wink


الملفات المرفقة صورة/صور
       
الرد }}}
تم الشكر بواسطة:
#2
مشكووور صديقي وجزاك الله كل خير
الرد }}}
تم الشكر بواسطة:
#3
شكراً جزيلا لك اخي الكريم

ينقل الى
قسم مقالات [url="http://vb4arb.com/vb/forumdisplay.php?13-%DE%D3%E3-%E3%DE%C7%E1%C7%CA-vb-net"]vb.net[/url]
الرد }}}
تم الشكر بواسطة:
#4
اعتقد في فجوال دوت نت ستحتاج الى اضافة
كود :
Imports System.Threading
في الجنرال
الرد }}}
تم الشكر بواسطة:
#5
نعم صديقي كلامك صحيح نسيت ان اقول ذالك
لأن ThreadExceptionEventArgs تحتاج الى namespace
System.Threading
لكن يمكنك كتابة
كود :
Public Sub ThreadException(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
عموما جزاك الله خيراً على التنبية وبارك الله فيك وفي جهدك المبذول "الواضح" في المنتدى مزيد من التقدم ان شاء الله Rolleyes


بالتوفيق Big Grin
الرد }}}
تم الشكر بواسطة:
#6
ما هذا كنت اريد ان اظغط شكرا وأعجبني :mad:
لما هذا الخطأ ؟؟
الرد }}}
تم الشكر بواسطة:
#7
ولا يهمك يا اخي مصطفى المهم ان مقالك تمام 100% ومفيد كمان Cool
الرد }}}
تم الشكر بواسطة:
#8
كمت توقعت اخطاء غير متوفعة تبرمج وتتعب في البرمج وتخرج الأخطاء غير المتوقعة :mad: لكن الروعة في استمرار التطوير وملاحقة الأخطاء
[ATTACH=CONFIG]258[/ATTACH]
عدلة الأن Wink
Smile


الملفات المرفقة صورة/صور
   
صل من قطعك , واعط من منعك , وإعف عن من ظلمك Big Grin
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سلسلة تعليمية] شرح تفصيلي وكامل عن كيفية الاتصال بسيكوال وعمل اتاش برمجي وجلب اسماء السيرفرات ابو انس 3 3,621 25-02-22, 12:44 AM
آخر رد: atefkhalf2004
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 5,859 30-07-21, 05:14 PM
آخر رد: kebboud
Photo كيفية اطهار جدول داخل الأخر alsouf 3 4,470 21-11-20, 09:15 AM
آخر رد: Anas Mahmoud
  لفهم كيفية الربط الذي يتم بين الجداول viv 4 4,992 03-10-20, 05:34 PM
آخر رد: Arfat007
  [VB.NET] كيفية استخدام اداوات ديف اكسبريس devexpressلادخال السجلات الى قاعدة بيانات نوع اكسس 13adam123 0 2,579 29-03-20, 12:50 PM
آخر رد: 13adam123
Star [مقال] كيفية تحويل اسعار العملات بإستخدام Yahoo Exchange Rates Web Service Programmation 9 8,956 22-02-20, 12:58 PM
آخر رد: دمعة المقهور
Exclamation كيفية تجاوز ظهور الخطا في Global.WindowsApplication1.My.Resources الرائد 0 2,549 13-08-19, 11:40 PM
آخر رد: الرائد
  [درس فيديو] كيفية استخدام الجملة الشرطية if alims 1 3,333 22-07-19, 06:38 AM
آخر رد: سعود
  كيفية عمل برنامج للأذان + قاعدة بيانات لـ 252 دولة و 9512 مدينة ! : مبرمج أوتار 4 23,517 21-01-19, 03:43 PM
آخر رد: elgokr
  التــعامل مع cmd من خلال الدوت نت مبتدئ في الاحتراف 3 3,778 02-06-18, 12:36 AM
آخر رد: YousefOkasha

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم