سؤال

أحاول التقاط استثناء "محدد" (Formatexception^أو OverflowException^) ثم إعادة رميه وتلتقطه في كتلة الاستثناء (استثناء^).

عند التشغيل ، أعطيها استثناء تنسيق من خلال الإدخال. أحصل بعد ذلك على هذا الخطأ في مربع حوار: "استثناء غير معقول من النوع" system.formatexception "حدث في FutureValue.exe معلومات إضافية: سلسلة الإدخال لم تكن بتنسيق صحيح." عندما أنقر "كسر" يستغرق الأمر لي إلى السطر رقم 232.

هنا هو الرمز الجزئي:

try
{
...
}
catch(FormatException^ ex)
{
      MessageBox::Show("FormatException Occured.  Message: " + ex->Message);
      throw;
}
***line# 232*** catch(OverflowException^ ex)
{
      MessageBox::Show("Overflow Occured. Message: " + ex->Message);
      throw;
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}
هل كانت مفيدة؟

المحلول

يؤدي تعبير reethrow (رمي بدون issignment_expression) إلى إعادة تدوير الكائن الذي تم إلقاؤه في الأصل. نظرًا لأن الاستثناء قد تم القبض عليه بالفعل في النطاق الذي يحدث فيه تعبير Rethrow ، فإنه يتم إعادة تدويره إلى كتلة Try Try المرفقة التالية. لذلك ، لا يمكن التعامل معها بواسطة كتل الصيد في النطاق الذي حدث فيه تعبير Rethrow.

مع الأخذ أعلاه في الاعتبار ، قد ترغب في كتابة رمزك مثل هذا:

try
{
    try
    {
       //...
    }
    catch(FormatException^ ex)
    {
          MessageBox::Show("FormatException Occured.  Message: " + ex >Message);
          throw;
    }
    catch(OverflowException^ ex)
    {
          MessageBox::Show("Overflow Occured. Message: " + ex->Message);
          throw;
    }
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}

نصائح أخرى

هل هناك مجموعة من المحاولة فوق هذا؟

لقد ألقيت استثناءً من بيان الرمي ، لا أحد يصطاده. لقد أخذك مصحح الأخطاء إلى حيث تم إلقاء الاستثناء

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top