اذهب إلى المحتوى

السؤال

نشر

مرحبا .. هدا هو الكود 

const sum = (num1: number, num2: number) => {
    console.log(num1 + num2);
    return num1 + num2;
  };

   // sum(5, 5);

  // Adding Try Cath Logic
  // sum(5, 'A'); // Log 5A Err under "A" becuse you put string

  console.log('====================================');
  try {
    sum(5, 1);
    sum(8, 'A');
  } catch (e) {
    console.log('the type you entered is NaN');
  }
  console.log('====================================');

وعند عمل ران فانه يطبع 

====================================
 LOG  6
 LOG  8A

  ===================================

انا اريده ان يظهر لى الاكسبشن 

'the type you entered is NaN'

ما الحل ؟

ملحوظة انا مستخدم تايب سكريبت 

Recommended Posts

  • 0
نشر

يجب أن تقوم باستخدام الصنف Exception لانشاء كائن منه, فأنت لم تستخدمه, وأيضا أرجو منك حذف السطر التالي من الكود

    console.log(num1 + num2);

لاحظ بعد التعديل كيف يصبح الكود

const sum = (num1: number, num2: number) => {
    return num1 + num2;
  };

  sum(5, 5);

  // Adding Try Cath Logic
  // sum(5, 'A'); // Log 5A Err under "A" becuse you put string

  console.log('====================================');
  try {
    sum(5, 1);
    sum(8, 'A');
  } catch (Exception e) {
    console.log('the type you entered is NaN');
  }
  console.log('====================================');

لاحظ لقد قمت باستخدام الصنف Exception وأنشأت منه كائن اسمه e وذلك لكي يتم اكتشاف الاستثناءات بطريقة جيدة, الآن لو حاولت تنفيذ الكود سوف يكون الناتج كالآتي

[LOG]: "====================================" 
[LOG]: "the type you entered is NaN" 
[LOG]: "===================================="

من المفترض أن يقوم بطباعة ناتج السطرين 

sum(5, 5);
sum(5, 1);

ولكن لم يطبعهما لأننا حذفنا السطر المسؤول عن الطباعة, لطباعة النتيجة يمكنك وضع استدعاء الدالة بداخل جملة الطباعة كالآتي

console.log(sum(5, 5));
console.log(sum(5, 1));

وبعد تنفيذ الكود بالكامل سوف تكون النتيجة كالآتي

[LOG]: 10 
[LOG]: "====================================" 
[LOG]: 6 
[LOG]: "the type you entered is NaN" 
[LOG]: "===================================="

 

  • 0
نشر
بتاريخ 6 دقائق مضت قال محمد أبو عواد:

يجب أن تقوم باستخدام الصنف Exception لانشاء كائن منه, فأنت لم تستخدمه, وأيضا أرجو منك حذف السطر التالي من الكود


    console.log(num1 + num2);

لاحظ بعد التعديل كيف يصبح الكود


const sum = (num1: number, num2: number) => {
    return num1 + num2;
  };

  sum(5, 5);

  // Adding Try Cath Logic
  // sum(5, 'A'); // Log 5A Err under "A" becuse you put string

  console.log('====================================');
  try {
    sum(5, 1);
    sum(8, 'A');
  } catch (Exception e) {
    console.log('the type you entered is NaN');
  }
  console.log('====================================');

لاحظ لقد قمت باستخدام الصنف Exception وأنشأت منه كائن اسمه e وذلك لكي يتم اكتشاف الاستثناءات بطريقة جيدة, الآن لو حاولت تنفيذ الكود سوف يكون الناتج كالآتي


[LOG]: "====================================" 
[LOG]: "the type you entered is NaN" 
[LOG]: "===================================="

من المفترض أن يقوم بطباعة ناتج السطرين 


sum(5, 5);
sum(5, 1);

ولكن لم يطبعهما لأننا حذفنا السطر المسؤول عن الطباعة, لطباعة النتيجة يمكنك وضع استدعاء الدالة بداخل جملة الطباعة كالآتي


console.log(sum(5, 5));
console.log(sum(5, 1));

وبعد تنفيذ الكود بالكامل سوف تكون النتيجة كالآتي


[LOG]: 10 
[LOG]: "====================================" 
[LOG]: 6 
[LOG]: "the type you entered is NaN" 
[LOG]: "===================================="

 

عدرا اخى ظهر خطأ له علاقة ب الاكسبشن والاعتراض على هدا السطر

} catch (Exception ,e) {

حيث كتب فى الكونسول

Unexpected token, expected ")" (18:21)

  • 0
نشر
بتاريخ الآن قال أحمد ابراهيم عبد الله:

عدرا اخى ظهر خطأ له علاقة ب الاكسبشن والاعتراض على هدا السطر

} catch (Exception ,e) {

حيث كتب فى الكونسول

Unexpected token, expected ")" (18:21)

لاحظ أنك تضع فاصلة بجانب e , أرجو منك ازالتها ثم حاول مرة أخرى

  • 0
نشر
بتاريخ 11 دقائق مضت قال محمد أبو عواد:

هل يمكنك ارفاق الكود بعد التعديل؟

const sum = (num1: number, num2: number) => {
    return num1 + num2;
  };




  console.log('====================================');
  try {
    sum(5, 1);
    sum(8, 'A');
  } catch (Exception e) {
    console.log('the type you entered is NaN');
  }
  console.log('====================================');

 

  • 0
نشر
بتاريخ 1 دقيقة مضت قال أحمد ابراهيم عبد الله:

const sum = (num1: number, num2: number) => {
    return num1 + num2;
  };




  console.log('====================================');
  try {
    sum(5, 1);
    sum(8, 'A');
  } catch (Exception e) {
    console.log('the type you entered is NaN');
  }
  console.log('====================================');

 

لقد عمل عندي دون أي مشاكل, ربما لديك مشكلة في الذاكرة التخزينية الخاصة بالمتصفح, أرجو منك استخدام متصفح اخر أو يمكنك تحطيث الصفحة بالضغط على الزرين ctrl+F5

  • 0
نشر
بتاريخ 3 دقائق مضت قال محمد أبو عواد:

لقد عمل عندي دون أي مشاكل, ربما لديك مشكلة في الذاكرة التخزينية الخاصة بالمتصفح, أرجو منك استخدام متصفح اخر أو يمكنك تحطيث الصفحة بالضغط على الزرين ctrl+F5

ربما لاننى استخدم رياكت ناتيف اى موبايل وليس ويب

  • 0
نشر

يمكنك عمل هذا الحل باستخدام الجافاسكربت

const NaNError = {};

const sum = (num1:number, num2:number) => {
  if (isNaN(num1) || isNaN(num2)) throw NaNError;
  return num1 + num2;
}

try {
  sum(5, 1);
  sum(8, 'A');
}
catch (NaNError e) {
  console.log('The type you entered is NaN')
}

هنا قمنا ببساطة بتعريف متغير للخطأ بحيث إذا كان أحد الرقمين للدالة sum عبارة عن NaN ففي هذه الحالة نرمي الخطأ الذي أنشأناه
 

  • 0
نشر

هدا هو الحل اخوتى 

وحلولكم صحيحة لكنها لم تنفع مع الموبايل فاانا استخدم رياكت ناتيف

  const sum = (num1: number, num2: number) => {
    return num1 + num2;
  };

  try {
    if (typeof sum(8, 'A') !== 'number'){
      throw new Error('the type you entered is NaN')
    }
  } catch (e) {
    console.log(e);
  }

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...