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

كيف استخدم try , catch في TypeScript

أحمد عبد الله2

السؤال

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

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

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

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

  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);
  }

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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
بتاريخ الآن قال محمد أبو عواد:

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

لقد قمت بتجريب الكود ولم يعمل ثم وضعتها ثم ازلتها ولا توجد فائدة 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

لقد قمت بتجريب الكود ولم يعمل ثم وضعتها ثم ازلتها ولا توجد فائدة 

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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 ففي هذه الحالة نرمي الخطأ الذي أنشأناه
 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...