"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > في معالجة استثناء ، ما هو الفرق بين "رمي" و "رمي استثناء جديد ()"؟

في معالجة استثناء ، ما هو الفرق بين "رمي" و "رمي استثناء جديد ()"؟

نشر في 2025-04-13
تصفح:342

What's the Difference Between `throw` and `throw new Exception()` in Exception Handling?

افهم بعمق الفرق بين رمي و رمي استثناء جديد () ]] في معالجة الاستثناء ، هناك اختلافات كبيرة في تأثيرات استخدام

رمي

و رمي استثناء جديد () . دعونا نغطس في سلوكياتهم:

رمي : احتفظ بمعلومات الاستثناء الأصلية ]] يعيد بيان

رمي

الاستثناء النشط حاليًا. عند استخدامها في كتلة catch ، فإنها تحتفظ بالنوع والرسالة وتكدس الاستثناء الأصلي. هذا يسمح للاستثناء بالاستمرار في الانتشار دون تعديله.

يحاول { ... } catch {throw}
try { ... }
catch { throw }
، حاول

block ، وستعمل كتلة على إعادة تشكيل نفس الاستثناء ، مع معلوماته الأصلية سليمة.

رمي استثناء جديد ()

: إعادة تعيين تتبع المكدس ]] من ناحية أخرى ، رمي استثناء جديد (رسالة)

ينشئ مثيل استثناء جديد ويستخدم الرسالة المحددة. هذا الإجراء يعيد تعيين تتبع المكدس ، وحذف جميع المعلومات المتتبع التي حدثت قبل

catch كتلة. يحاول{ ... } catch (استثناء e) {رمي استثناء جديد (e.message)}

try{ ... }
catch(Exception e) {throw new Exception(e.message) }
، وسيقوم كتلة

بإنشاء استثناء جديد مع رسالة الاستثناء الأصلي ، ولكن يبدأ تتبع المكدس من catch . تجنب استخدام

رمي ex

نوصي بشدة بعدم استخدام رمي ex

في

سيؤدي القيام بذلك إلى نشر الاستثناء الأصلي ، ولكن سيتم إعادة تعيين تتبع المكدس. هذا يجعل تصحيح مصدر الاستثناءات صعبًا للغاية. إنشاء استثناء مخصص

]

في بعض الحالات ، قد يكون من الضروري لف جميع الاستثناءات في كائن استثناء مخصص لتقديم معلومات إضافية. للقيام بذلك ، حدد فئة استثناء جديدة موروثة من استثناء ، بما في ذلك جميع مُنشئي الاستثناءات الأربعة. اختياريا ، يمكنك إضافة مُنشئ إضافي يقبل الاستثناء الأصلي والمعلومات الإضافية. عند إلقاء استثناء مخصص ، تأكد من تمرير الاستثناء الأصلي كمعلمة استثناء داخلية للحفاظ على تتبع المكدس والخصائص الأخرى.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3