• 0
  • مالي خلق
  • أتهاوش
  • متضايق
  • مريض
  • مستانس
  • مستغرب
  • مشتط
  • أسولف
  • مغرم
  • معصب
  • منحرج
  • آكل
  • ابكي
  • ارقص
  • اصلي
  • استهبل
  • اضحك
  • اضحك  2
  • تعجبني
  • بضبطلك
  • رايق
  • زعلان
  • عبقري
  • نايم
  • طبيعي
  • كشخة
  • النتائج 1 إلى 6 من 6

    الموضوع: Exception ... لدي مشكلة بالـlogic

    1. #1
      التسجيل
      02-12-2002
      المشاركات
      4,577
      المواضيع
      445
      شكر / اعجاب مشاركة

      Exception ... لدي مشكلة بالـlogic

      السلام عليكم ,,

      أجد صعوبة في فهم الإكسبشنز مدري إذا إسمها نفس الشي بباقي اللغات , لأن هذا إسمها بالجافا.

      بس هي لو كان فيه حالة إستثانيئة تمنع البرنامج من العمل تقوم بإنهاء البرنامج و تبين سبب العطل .. هذا على حد علمي مدري لو غلط - هذي الفكرة العامة صححوني لو غلط-

      السؤال :

      متى أحطها ؟ وليش؟!!؟!

      يعني هو يقول (الكتابJava programing from problem analysis to problem design) إن إحنا محطها عشان الـUnchecked expceptions يعني زي أيش ؟ وليش نحطها لـ الـchecked expceptions إذا الجافا أصلاً يبين لي المشكلة ؟؟؟؟


      السؤال الثاني :

      الحين فيه شي إسمه throwing and rethrowing an exception

      متى وليش نستخدمها ..يعني الكتاب يقول إنه عشان ما نرمي و نبعثر جمل إكسبشن وسط البرنامج ..

      إلي فاهمين الله يوفقكم إشرحوا لي .. الله يفتح عليكم و ييسر أموركم دنيا و آخرة

      الموضوع جداً مهم بالنسبة لي و أتمنى إني ألقى إجابة بأقرب وقت ممكن

    2. #2
      التسجيل
      17-10-2003
      الدولة
      منتدى المنتدى
      المشاركات
      513
      المواضيع
      41
      شكر / اعجاب مشاركة

      رد: Exception ... لدي مشكلة بالـlogic

      الHandling Exception نستخدمها في التعامل مع الاخطاء في البرنامج و ميزتها انه بمجرد مايكشف Exception يوقف تنفيذ الكود و يروح للكود اللي يصلح الخطأ يعني افرض انك كنت مسوي برنامج يسوي عمليات رياضيه و جاء احد امستخدمين وسوى عملية قسمه على صفر لو ان البرنامج مافيه Exception راح يصير Crash للبرنامج و هذا يعتبر عيب في برنامجك انه يوقف فجأه والصحيح هو انك تسوي Exception اذا جاء المستخدم يقسم على صفر يطلع من تنفيذ الكود و يقول للمستخدم ممنوع تقسم على صفر و يخليه يدخل الرقم مره ثانيه




    3. #3
      الصورة الرمزية shjoonal3in
      shjoonal3in غير متصل عضوة قديرة ومراقبة سابقة
      عبقري
       
      التسجيل
      23-12-2004
      الدولة
      AD
      المشاركات
      4,350
      المواضيع
      146
      شكر / اعجاب مشاركة

      رد: Exception ... لدي مشكلة بالـlogic

      مثل ما قال أخوي UUNUU
      الإكسبشن تستخدم لحل المشاكل التي تواجه البرنامج ...

      تقدرين تستخدمينه في حالات كثيرة لحل أي مشكلة ... مثلاً في حالة عملية القسمة على صفر ... أو في حالة البرنامج يبحث عن ملف وما وجده ... أو في حالة البرنامج متصل بالشبكة وانفصل الاتصال ... وغيره من المشاكل
      هذي المشاكل تحلينها باستخدام الإكسبشنز ... بطريقة try and catch
      فيكون الميثود أو الجزئية من الكود اللي قد تحصل فيها مشكلة محاطة بـ try ميثود ... وفي حالة حدوث أي خطأ ... تنتقل من بلوك try في الكود من غير أن تكمل باقي السطور في البلوك (إذا كان فيه بقية )إلى بلوك catch واللي هي ميثود تستقبل في الـ parameters أوبجكت من أي نوع من الأكسبشنز تقدرين تحددينه أو تخلينه عام كـ Exception
      في حالة ما صارت أي مشكلة ... البرنامج يعمل الكود اللي في بلوك try من غير ما يروح لـ catch
      مثلاً ...
      try{
      object.divide(6,0);
      }
      مثلاً الميثود divide هنا راح تقسملك الرقم الأول على الثاني .. اللي هم 6 على صفر ..

      النتيجة أكيد غير معرفه ... null
      عندها لازم البرنامج يعمل
      handling for this exception using the catch method as the
      following....

      catch (Exception e){
      System.out.println(" can't divide by zero");
      }
      طبعاً الـ catch أخذت الإكسبشنز وبلعته ... وظهرت في الشاشة مسج تقول لليوزر ما أقدر أقسم على صفر!!
      في الـ catch تقدرين تعملين أي شي كـ حل للمشكلة ... سواء تعرضين مسج للخطأ ... أو تطلبين من اليوزر يدخل رقم جديد ... أو اسم ملف مختلف ... أو تعملين تتبع للكود وتخزنينه بملف أو تعرضينه بالشاشة وتشوفين وين المشكلة ... أو أي شي تعتبرينه حل لمشكلتك ...
      لاحظي إن الأكسبشن هنا عام ... مش محدد ... أقصد استخدمنا أوبجكت من كلاس Exception
      في حالات أخرى تقدرين مثلاً تحددين نوعه... مثلاً لو تتوقعين يحصل اي مشكلة خلال الاتصال لميثود تستخدم الكونيكشن .... تحطين بالـ catch ... النوع الخاص فيه...
      وإذا كانت الميثود تسوي لود لمعلومات من ملف ... و ممكن يكون هالملف غير موجود ... تحطين بالـ catch النوع الخاص فيه ... اللي هو FileNotFoundException وهكـــــذا ... فيه كثير أنواع ...
      وكل ما كنتي دقيقة بتحديد نوع الإكسبشن ... كل ما كان أداء البرنامج أفضل...

      ملاحظة ... طبعاً الميثود اللي ذكرتها divide بتاخذ الـ inputs من اليوزر ... بطريقة أو بأخرى أنا هنا ما وضحتها .... حطيتها مباشرة ...

      عفسة شرحي ... مو ؟^^
      حاولي تبحثين في القوقل ... حطي سؤالك وبيطلع لك مئات الأرتيكلز والمواقع شرح للإكسبشنز وأنواعها ... بحر شدي حيلك واغطسي ...
      السموحة منك ... والله يوفقك ...

    4. #4
      التسجيل
      02-12-2002
      المشاركات
      4,577
      المواضيع
      445
      شكر / اعجاب مشاركة

      رد: Exception ... لدي مشكلة بالـlogic

      ماشاء الله

      شكراً .. الصراحة الشرح جداص وافي ..

      بس باقي عندي سؤال أخير (إن شاء الله) الـStream .. إلي تمر فيه المعلومات إلي من المستخدم لنفرض إني طلبت من المستخدم يدخل رقم .. وبالغلط دخل حرف ..

      يعني ..


      كود:
      System.out.println("Please Enter the Number Zero:");
      Int X = input.nextInt();
      نفرض إن المستخدم دخل "F0" بدل المطلوب .. الكتاب إلي عندي يقول إن الحل هو ..


      كود:
      catch (InputMismatchException obj)
      {
      String str = input.next();
      System.out.print("Error: "+obj.toString()+" " +str);
      }

      السؤال هنا ..

      الستريم .. أيش هو بالضبط .. وكان هذي طريقة العلاج ؟ و بالنسبة للجملة التي يتم طبعاتها في الأخير مو مهمة بس عشان التوضيح صح ؟


      و الله يوفقكم دنيا و آخرة

    5. #5
      الصورة الرمزية shjoonal3in
      shjoonal3in غير متصل عضوة قديرة ومراقبة سابقة
      عبقري
       
      التسجيل
      23-12-2004
      الدولة
      AD
      المشاركات
      4,350
      المواضيع
      146
      شكر / اعجاب مشاركة

      رد: Exception ... لدي مشكلة بالـlogic

      اقتباس المشاركة الأصلية كتبت بواسطة فيلسوفة زمانها مشاهدة المشاركة
      بس باقي عندي سؤال أخير (إن شاء الله) الـStream .. إلي تمر فيه المعلومات إلي من المستخدم لنفرض إني طلبت من المستخدم يدخل رقم .. وبالغلط دخل حرف

      يعني ..


      كود:
      System.out.println("Please Enter the Number Zero:");
      كود:
      Int X = input.nextInt();


      نفرض إن المستخدم دخل "F0" بدل المطلوب .. الكتاب إلي عندي يقول إن الحل هو ..


      كود:
      catch (InputMismatchException obj
      كود:
      {
      String str = input.next();
      System.out.print("Error: "+obj.toString()+" " +str);
      }




      السؤال هنا ..
      الستريم .. أيش هو بالضبط .. وكان هذي طريقة العلاج ؟ و بالنسبة للجملة التي يتم طبعاتها في الأخير مو مهمة بس عشان التوضيح صح ؟

      و الله يوفقكم دنيا و آخرة


      آآآآآمين ... ^^
      هلا أختي ...
      بالنسبة للستريم...
      هي طريقة الجافا تستخدمه في حالة البرنامج يبي ياخذ ويعطي inputsو outputs...

      يعني إذا البرنامج يبي يقرأ من/أو يكتب إلى ... فايل أو سوكيت أو ..الخ

      تروحين تستخدمين هالكلاسات عشان تساعدك في هذا الشيء ...
      الستريم يمرر المعلومات من وإلى البرنامج ...
      على فكرة لاحظي في مثال الكتاب InputMismatchException استخدم نوع معين من الإكسبشنز مناسبة للمشكلة اللي متوقعها تحصل... اللي هي إن الـ input مو اللي يبغيه البرنامج ...
      والجملة الأخيرة المطبوعة عالشاشة على قولتك للتوضيح بس ... ولاحظي إنها تطبع كلمة Error وتطبع الإكسبشن على شكل string وتطبع ال str اللي هو المدخل ( الخطأ) اللي أدخله اليوزر ...

      واسمحيلي إذا كنت ما فهمت سؤالك ... ^^

    6. #6
      التسجيل
      02-12-2002
      المشاركات
      4,577
      المواضيع
      445
      شكر / اعجاب مشاركة

      رد: Exception ... لدي مشكلة بالـlogic

      شكراً

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

    ضوابط المشاركة

    • لا تستطيع إضافة مواضيع جديدة
    • لا تستطيع الرد على المواضيع
    • لا تستطيع إرفاق ملفات
    • لا تستطيع تعديل مشاركاتك
    •