لقد تعلمت آلية الاستثناء في اليومين الماضيين، والتي تعتبر المحاولة...الالتقاط...أخيرًا جزءًا مهمًا في رأيي فيما يتعلق بالبيانات التي تعلمتها من قبل، واجهت مشكلة العودة وأخيرًا بالتجارب، وجدت أن هذه العلاقة المنطقية في لغة الكمبيوتر دقيقة حقًا، وفيما يلي رأيي الخاص، إذا كان هناك شيء خاطئ، أتمنى أن تتمكنوا من توضيحه:
انظر أولاً إلى الجزء الأول من الكود
public class return_finally{ public static void main(String[] args){ System.out.println( m_1() } public static int m_1(){ int i=10; حاول { System.out.println( "start" ); return i+=10; System.out.println(i ); System.out.println( "أخيرًا" } return i;
إخراج الجزء الأول من التعليمات البرمجية هو كما يلي:
يبدأ
20
أخيراً
20
لاحظ أن الإرجاع الثاني خارج العبارة النهائية في هذا الوقت وفقًا للوائح التي تعود وتظهر أخيرًا في نفس الوقت، يمكننا أن نفهم أن الإرجاع الأول هو مجرد شرط، وتتمثل مهمته في العثور على العبارة النهائية فقط. في الواقع، فهو ينفذ فقط عملية i+= 10، ثم يدخل العبارة النهائية مباشرة، ويعيد النتيجة في النهاية.
دعونا نلقي نظرة على الجزء الثاني من الكود:
public class return_finally{ public static void main(String[] args){ System.out.println( m_1() } public static int m_1(){ int i=10; حاول { System.out.println( "start" ); return i+=10; System.out.println(i ); System.out.println( "أخيرًا" );
الفرق بين الجزء الثاني من الكود والجزء الأول هو أن الإرجاع النهائي يتم وضعه في العبارة النهائية، يمكننا تخمين نتيجة الإخراج:
يبدأ
20
أخيراً
50
لقد تم استبدال الإرجاع الذي تم تنفيذه في هذا الوقت بالرقم 20 الذي تم الحصول عليه من نتيجة العملية السابقة وأعاد القيمة 50. وهذا يعني أنه تم تنفيذ الإرجاع في البيان الأخير حسنًا، يجب أن يقال على هذا النحو ~~
هناك أيضًا جزء ثالث من الكود، يرجى الاستمتاع به ببطء:
public class return_finally{ public static void main(String[] args){ System.out.println( m_1() } public static int m_1(){ int i=10; حاول { System.out.println( "start" ); return i; System.out.println(i ); System.out.println( "أخيرًا" );
في هذا الوقت، يوجد i=50 إضافي في العبارة النهائية، فما هي النتيجة؟
يبدأ
أخيراً
10
هذه هي النتيجة، لا توجد عبارة إرجاع في العبارة النهائية، لذا لن تتغير قيمة الإرجاع الأصلية.
ومن خلال هذه الأمثلة الثلاثة، هل يمكننا أن نفهم الأمر بهذه الطريقة:
عند مواجهة الإرجاع في عبارة المحاولة، قم أولاً بتخزين القيمة في مكان ما، ثم ابحث عن العبارة النهائية إذا كانت هناك خوارزمية جديدة في العبارة، فقم بإزالة القيمة من تلك المساحة وقم بتنفيذ العملية إذا كانت موجودة عودة في النهاية، ما عليك سوى وضع "القيمة الجديدة" "الكتابة فوق" القيمة القديمة "في تلك المساحة والعودة في النهاية؛ إذا لم يكن هناك عودة في النهاية، فما عليك سوى إزالة "القيمة القديمة" في تلك المساحة وإعادتها.
ما ورد أعلاه هو فقط للفهم، وآمل أن تتمكن من إعطائي المزيد من النصائح، شكرًا لك على مساعدتك!