الفرق بين رمي ورمي في جافا

مؤلف: Laura McKinney
تاريخ الخلق: 1 أبريل 2021
تاريخ التحديث: 2 قد 2024
Anonim
Video23 Throw And Throws in java
فيديو: Video23 Throw And Throws in java

المحتوى


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

  1. رسم بياني للمقارنة
  2. تعريف
  3. الاختلافات الرئيسية
  4. خاتمة

رسم بياني للمقارنة

أساس المقارنةيرمييلقي
الأساسيتسليم الكلمة الأساسية رمي كائن الاستثناء الذي تم إنشاؤه إلى JVM يدوياً.يتم استخدام الكلمة الأساسية throws لتفويض مسؤولية الاستثناء إلى المتصل الأسلوب.
بناء الجملةرمي المثيل المثال ؛return_type method_name (قائمة المعلمات) يلقي ExceptionClass_list
{
// الجسم من الطريقة
}
تليهايتبع الكلمة الأساسية رمي بواسطة كائن الاستثناء.الكلمة الأساسية لرميات متبوعة بقائمة فئات الاستثناء التي يمكن أن تحدث في الطريقة.
عدد الاستثناءات التي ألقيتيمكن للكلمة الأساسية للرمي رمي مثيل استثناء واحد.يمكن للكلمة المفتاحية أن تعلن عن فئات استثناء متعددة مفصولة بفاصلة.


تعريف رمي

الكلمة الرئيسية "يرمييستخدم "" لتسليم مثيل الاستثناء الذي تم إنشاؤه إلى JVM (Java Virtual Machine) يدويًا. إذا لم يتم استخدام "رمي" لرمي مثيل استثناء وحدث الاستثناء ، فإن نظام التشغيل داخليًا يرمي مثيل الاستثناء إلى JVM وينتهي البرنامج بشكل غير طبيعي. الشكل العام للكلمة الرئيسية هي:

رمي Throwable_instance ؛

يجب أن يكون أعلى Throwable_instance كائنًا للفئة Throwable. لا يمكن طرح أنواع بدائية مثل int ، أو float ، أو char ، أو مثيل فئة غير قابل للرمي باستخدام كلمة رمي.

دعونا نأخذ مثالا لفهم رمي الكلمة.

Class Test {Public static void main (String args) {throw new ArithmeticException ("/ by zero")؛ }}

في التعليمة البرمجية أعلاه ، يلقي رمي الكلمة الأساسية مثيل فئة الاستثناء "ArithmeticException". إذا لم يتم استخدام الكلمة الأساسية للرمي بعد ذلك ، فإن الطريقة الرئيسية () كانت ستنشئ داخليا كائن استثناء تم تسليمه إلى JVM.

النقاط التي يجب تذكرها حول رمي الكلمات الرئيسية:


  • يقوم بتسليم الكائن الاستثناء يدوياً إلى JVM.
  • يتم استخدامه بشكل أفضل للاستثناءات المعرفة من قبل المستخدم أو الاستثناءات المخصصة.
  • إذا لم يتم تخصيص الذاكرة لكائن الاستثناء الذي تم طرحه بواسطة كلمة أساسية ، فسيحدث استثناء وقت التشغيل ، NullPointerException.
  • توقف الكلمة الأساسية للتنفيذ عن تنفيذ البرنامج فور حدوثه. لا يمكننا كتابة أي بيان مباشرة بعد بيان الرمية. إذا كتبنا أي رباط مباشرة بعد بيان الإلقاء ، فسوف يعرض المترجم خطأً ، عبارة غير قابلة للوصول أثناء التحويل البرمجي.
  • يمكن إلقاء كائنات فقط من فئة Throwable باستخدام كلمة رمي. إذا كان الكائن الذي تم طرحه ليس كائنًا من الفئة Throwable ، فسنحصل على خطأ وقت الترجمة "تم العثور على نوع غير متوافق. . مطلوب java.lang.Throwable "

ملحوظة:

يتم استخدام الكلمة الأساسية للرمي في C ++ و JAVA و C # لإلقاء استثناء يدويًا.

تعريف الرميات

ال "يلقي"يتم استخدام الكلمة الأساسية لتفويض مسؤولية معالجة الاستثناء الذي حدث في الطريقة ، إلى طريقة المتصل بها. طريقة المتصل هي المسؤولة عن معالجة الاستثناء الذي قد يكون أي طريقة أخرى أو JVM. تعلن قائمة فئات الاستثناء التي قد تحدث في الأسلوب.

يقنع استخدام الكلمة الأساسية throws المحول البرمجي أن الاستثناء حدث في الأسلوب هو أن تتم معالجتها بواسطة أسلوب المتصل وبالتالي ، لا يحدث خطأ ترجمة. ولكن ، يجب أن تتعامل طريقة المتصل مع الاستثناء أو تفويض مسؤولية معالجة الاستثناء إلى طريقة التسلسل الهرمي الخاصة به. عند حدوث استثناء وقت التشغيل ، حتى بعد استخدام كلمة throws ، لا يمنع هذا الإنهاء غير الطبيعي للبرنامج. إذا كانت طريقة الاتصال هي main () ، فإن JVM بشكل افتراضي يعالج الاستثناء.

الشكل العام للكلمة الرئيسية للرميات هو:

return_type method_name (قائمة المعلمات) يلقي استثناءً Class_list {// body of method}

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

دعونا نأخذ مثالا واحدا لفهم كلمة الرميات.

calss Test {public static void main (String args) throws InterruptedException {thread sleep (10000)؛ }}

في الكود أعلاه ، يتم عمل الخيط الرئيسي للنوم لبعض الوقت باستخدام طريقة sleep (). الآن ، عندما تكون الطريقة الرئيسية في وضع السكون ، من المحتمل أن مؤشرات الترابط الأخرى قد تقاطع السلسلة الرئيسية. ولكن ، يتم استخدام الكلمة الأساسية للرميات بعد توقيع طريقة main () لذلك ، سيتم تجميع البرنامج بسهولة. الكلمة الأساسية throws يتم الإعلان عن فئة الاستثناء المحددة InterruptedException. الآن ، إذا كان أي مؤشر ترابط آخر يقطع مؤشر الترابط الرئيسي أثناء وقت التشغيل ، فإن الكلمة المفتاحية لرميات سوف تقوم بتسليم هذا الاستثناء لطالب main () ، وهو JVM. فإن JVM إنهاء البرنامج بشكل غير طبيعي.

النقاط التي يجب تذكرها حول الكلمات الرئيسية المتعلقة بالرميات:

  • يتم استخدام الكلمة الأساسية throws فقط لإعلان فئات الاستثناء المحددة. لا يؤثر استخدام الكلمة الرئيسية للرميات في استثناء غير محدد.
  • إذا لم ترغب الطريقة في معالجة الاستثناء بمفردها ، فستفوض هذا الاستثناء إلى طريقة المتصل لتلك الفئة باستخدام الكلمة الأساسية throws.
  • استخدامه يتيح فقط تجميع سلس للبرنامج.
  • في حالة حدوث استثناء في وقت التشغيل ، يتم إنهاء البرنامج بشكل غير طبيعي ، حتى بعد استخدام الكلمة الأساسية throws.
  • يوصى باستخدام كتلة try / catch لإنهاء البرنامج بشكل طبيعي في حالة حدوث استثناء في وقت التشغيل.

ملحوظة:

رميات الكلمات الرئيسية المستخدمة فقط في Java. لا تستخدم C ++ و C # الكلمة الأساسية للرميات.

  1. تقوم أداة رمي الكلمات الأساسية بتسليم مسؤولية معالجة الاستثناء إلى JVM يدويًا ، في حين تقوم أداة رمي الكلمات الرئيسية بتسليم مسؤولية معالجة الاستثناء لطريقة المتصل بالرمز حيث حدث استثناء.
  2. يتبع الكلمة الأساسية للرمي كائن الاستثناء الذي تم تسليمه إلى JVM. من ناحية أخرى ، يلي كلمة الرميات بفئات الاستثناء التي يمكن أن تحدث في هذه الطريقة.
  3. يمكن للكلمة الأساسية للرمي رمي كائن استثناء واحد في كل مرة ، في حين أن الكلمة الأساسية للرميات يمكنها إعلان فئات استثناء متعددة مفصولة بفاصلة في وقت واحد.

خاتمة:

أفضل طريقة لاستخدام الكلمة الأساسية هي الاستثناء المخصص. تعتبر كتلة try / catch هي الأفضل للتعامل مع الاستثناءات مقارنةً بالكلمات الرئيسية المتعلقة بالرميات.