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

في هذا الدرس :
1. سنكمل ما بدأنا فية بتخطي الأخطاء والتعامل معها في بيئة الدوت نت

في البداية اقرأ هذا الموضوع للتعرف على الأخطاء بصورة عامة
http://vb4arb.com/vb/showthread.php?390-...%CA-%E4%CA

افتح تطبيق Console جديد وكتب هذا الأمر :

كود :
int i = Convert.ToInt32(Console.ReadLine());
شغل التطبيق ثم اكتب مثلا اي حرف
سيكتب كلام كثير ثم يتوقف البرنامج عن العمل لنبدأ في الشرح
عندما تمرر قيمة من نوع اخر غير int للبرنامج سيحدث خطأ غير متوقع
بإمكانك استخدام
Try
لكن هذا متعب ويجب ان تقوم بوضعة في جميع الأكواد او ربما كما ذكرنا في المقالة السابقة اخطاء لا تضع لها حساب وتقع !
حسننا في البداية نبدأ في وضع تحويل لكل الأخطاء
UnhandledException
هذا الحدث يكمن هنا
AppDomain.CurrentDomain.
اذا لنضعة داخل Main ليصبح الكود
كود :
static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
            int i = Convert.ToInt32(Console.ReadLine());
        }
طبعا سنشأ void بسم UnhandledExceptionTrapper وهو الذي سيعود الية كل الأخطاء :
كود :
static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e)
        {
            
        }
طيب الأن نقع في حرج فمثلا نريد ان نحصل على رسالة الخطأ فقط وليس الكلام الكثير فإذا كتبنا داخل هذا الأمر
Console.Write(e.toString);
سنفاجء بنص كثير اذا ما الحل
الحل في ان نحول e الى Exception
هكذا
كود :
Exception error = (Exception)e.ExceptionObject;
والأن يمكننا كتابة :
Console.Write(e.Message);
ليصبح الكود في الختام :
كود :
using System;
using System.Collections.Generic;
using System.Text;

namespace TestFun
{
    class Program
    {
        [MTAThread]
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
            int i = Convert.ToInt32(Console.ReadLine());
        }
      
        static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e)
        {
            Exception exception = (Exception)e.ExceptionObject;
            Console.Beep();
            Console.WriteLine(exception.Message);

        }
    }
}
جرب الأن كتابت حرف ستجدة اخرج لك رسالة الخطأ
- ملحوظة هامة - إذا كانت لغتك التي ثبت بها الدوت نت عربية فستظهر رسالة الخطأ بصورة غريبة لأن Console لا يدعم اللغة العربية

وأي سؤال انا جاهز Smile

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



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


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