افهم بعمق الفرق بين رمي
و رمي استثناء جديد ()
]]
في معالجة الاستثناء ، هناك اختلافات كبيرة في تأثيرات استخدام
و رمي استثناء جديد ()
. دعونا نغطس في سلوكياتهم:
رمي : احتفظ بمعلومات الاستثناء الأصلية
]]
يعيد بيان
الاستثناء النشط حاليًا. عند استخدامها في كتلة catch
، فإنها تحتفظ بالنوع والرسالة وتكدس الاستثناء الأصلي. هذا يسمح للاستثناء بالاستمرار في الانتشار دون تعديله.
try { ... }
catch { throw }
، حاول block ، وستعمل كتلة على إعادة تشكيل نفس الاستثناء ، مع معلوماته الأصلية سليمة.
: إعادة تعيين تتبع المكدس ]]
من ناحية أخرى ، رمي استثناء جديد (رسالة)
catch كتلة.
يحاول{ ... }
catch (استثناء e) {رمي استثناء جديد (e.message)}
try{ ... }
catch(Exception e) {throw new Exception(e.message) }
، وسيقوم كتلة بإنشاء استثناء جديد مع رسالة الاستثناء الأصلي ، ولكن يبدأ تتبع المكدس من
catch .
تجنب استخدام
نوصي بشدة بعدم استخدام رمي ex
سيؤدي القيام بذلك إلى نشر الاستثناء الأصلي ، ولكن سيتم إعادة تعيين تتبع المكدس. هذا يجعل تصحيح مصدر الاستثناءات صعبًا للغاية.
إنشاء استثناء مخصص
في بعض الحالات ، قد يكون من الضروري لف جميع الاستثناءات في كائن استثناء مخصص لتقديم معلومات إضافية. للقيام بذلك ، حدد فئة استثناء جديدة موروثة من استثناء ، بما في ذلك جميع مُنشئي الاستثناءات الأربعة. اختياريا ، يمكنك إضافة مُنشئ إضافي يقبل الاستثناء الأصلي والمعلومات الإضافية. عند إلقاء استثناء مخصص ، تأكد من تمرير الاستثناء الأصلي كمعلمة استثناء داخلية للحفاظ على تتبع المكدس والخصائص الأخرى.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3