في Java ، عندما تحاول وأخيراً عبارات العودة ، ما هو الموقف في النهاية؟ الآن دعنا نشرح ذلك مع المثال التالي:
الحالة الأولى: تحتوي المحاولة على عبارة الإرجاع ، وأخيراً لا تحتوي عليها.
{Static String S = "" {system.out.println ("جرب ..."نحن هنا نحدد سلسلة S ، وتعيين "A" إلى S في المحاولة ، وإعادتها مباشرة ، وتعيين "B" إلى S في النهاية. فيما يلي نتائج التنفيذ
حاول ..... 17 ب 8 أ
لقد وجدنا أن النتيجة النهائية هي ، ولكن يتم طباعة B بأولوية على A. من خلال تصحيح الأخطاء خطوة بخطوة ، وجدنا أنه قبل تنفيذ العائد في المحاولة ، سيتم تنفيذ الكود في النهاية ، ثم سيتم تنفيذ بيان الإرجاع. إذا تم تضمين بيان العودة أخيرًا ، فما الذي سيحدث؟
الحالة الثانية: جرب وأخيراً تحتوي على بيانات العودة.
{Static String S = "" {system.out.println ("Try ......") ؛أي نوع من النتائج سيحدث إذا تم تغيير S = "B" ؛ هل السلسلة S A أو B؟
حاول ..... 8 ب
وجدنا أن النتيجة المطبوعة النهائية هي ب.
نعلم أن عبارة الإرجاع تستخدم بطريقة معينة. ، الذي يستخدم لإنهاء الطريقة في هذا الوقت.
print int print () {int c = 1 ؛ (استثناء e) {e.printstacktrace () ؛ C ؛نتيجة تنفيذ البرنامج هي:
يجري:
حاول التنفيذ ...
تنفيذ أخيرا ...
3
بنيت بنجاح (إجمالي الوقت: 0 ثانية)
لاحظ أنه لا يمكن أن يكون هناك سوى بيان إرجاع واحد في المواضع 2 و 3 ، ويجب أن يكون هناك بيان إرجاع واحد في 2 و 3 و 4. إذا تم تنفيذ 2 ، فسوف تنتهي الطريقة ولا يمكن تنفيذ البيان في 3.
عندما يتم تنفيذ كتلة TRAIL في 1 ، سيتم تخزين قيمة إرجاع الوظيفة في متغير مؤقت آخر (متغيرات مختلفة من C ، وهي قيمتها 102). تتم مواجهة كتلة بيان أخرى في 2 ، ويتم تخزين قيمة الإرجاع في المتغير المؤقت (القيمة 3).
print int print () {int c = 1 ؛ -1} أخيرًا {c ++ ؛في الكود أعلاه ، لا يوجد بيان إرجاع في كتلة البيان أخيرًا.
Run: Tryfinally102 بنجاح (إجمالي الوقت: 0 ثانية)
الخلاصة: 1. بغض النظر عما إذا كان هناك بيان إرجاع في المحاولة ، سيتم تنفيذ البيان أخيرًا (إنه أخيرًا ، والاسم جيد).
2. إذا لم يكن هناك بيان إرجاع في النهاية ، وهناك عائد في المحاولة ، ثم قبل تنفيذ عبارة الإرجاع في المحاولة ، سيتم تنفيذ الكود في النهاية أولاً ، ثم بيان الإرجاع في المحاولة ؛ في النهاية ، سيعود مباشرة ولم يعد ينفذ بيان الإرجاع في المحاولة.