English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

لماذا لا يمكن استخدام المتغيرات المحددة في try في catch أو final في Java؟

سيكون للفئة في Java ثلاثة أنواع من المتغيرات، وهي متغيرات النمط (الفئة)، النموذجية والمحلية.

  • متغيرات النموذج-هذه المتغيرات تعتبر جزءًا من كائن الفئة (الكائن). ويتم إعلانها في داخل الفئة ولكن خارج الطريقة. ويتم تثبيتها عند تعريف الفئة. يمكن الوصول إليها من أي طريقة، بناء كائن أو جسم من هذه الفئة المحددة.

  • الفئة/المتغيرات الثابتة-تحتوي الفئة/المتغيرات الثابتة على الفئة، مثل المتغيرات النموذجية، ويتم إعلانها في داخل الفئة في أي طريقة باستخدام الكلمة المفتاحية static.

    يمكن الوصول إليها عند التجميع، يمكنك الوصول إليها قبل تعريف الكائن/لا تعريف الكائن عند تعريف الفئة، هناك نسخة واحدة فقط من الحقل الثابت في جميع الكائنات، أي أن قيمة الحقل الثابت هي نفسها في جميع الكائنات. يمكنك استخدام الكلمة المفتاحية static لتعريف حقل ثابت.

  • متغيرات محلية-هذه المتغيرات تعتبر جزءًا من الطريقة/الجسم/المستشار ويتم إعلانها/تحديدها فيها. تتواجد نطاق هذه المتغيرات داخل الطريقة (أو الجسم أو المستشار) ويتم تدميرها بعد التنفيذ.

متغيرات جسم try

لذلك، إذا تم إعلان متغير داخل جسم try (وذلك ينطبق على أي جسم في أي وقت)، سيكون هذا المتغير في نطاق هذا الجسم المحدد، وسيكون دورة حياة المتغير انتهت بعد تنفيذ هذا الجسم. لذلك، لا يمكنك الوصول إلى أي متغير تم إعلانه في جسم خارجي.

المثال

في المثال التالي، نعرف متغيرًا يُدعى result ونحاول الوصول إليه في دفع الموقف النهائي، مما يسبب خطأً في التجميع عند التجميع.

import java.util.Arrays;
import java.util.Scanner;
public class ExceptionExample {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      int[] arr = {10, 20, 30, 2, 0, 8};
      System.out.println("المخطط: " + Arrays.toString(arr));
      System.out.println("اختر المكون المكون والناقص (لا يكون 0) من هذا المخطط (ادخل المواضع 0 إلى 5)");
      int a = sc.nextInt();
      int b = sc.nextInt();
      try {
         int result = (arr[a]) / (arr[b]);
      catch(Exception e) {
         finally {
      }
         System.out.println("هذا هو دفع الموقف النهائي");
         System.out.println("نتيجة " + arr[a] + "/" + arr[b] + ": " + result);
      }
   }
}

نتيجة الإخراج

ExceptionExample.java:21 خطأ: لا يمكن العثور على الرمز
      System.out.println("نتيجة " + arr[a] + "/" + arr[b] + ": " + result);
                                                            ^
   الرمز: متغير result
   الموقع: class ExceptionExample
1 خطأ
أنت قد تحب