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

Warum können Variablen, die in einem try-Block definiert sind, nicht in einem catch-Block oder final in Java verwendet werden?

Java中的类将具有三种变量,即静态(类),实例和局部变量。

  • 实例变量-这些变量属于类的实例(对象)。这些在类内但在方法外声明。这些在实例化类时初始化。可以从该特定类的任何方法,构造函数或块中访问它们。

  • 类/静态变量-类/静态变量属于类,就像实例变量一样,它们在类内在任何方法之外声明,但使用static关键字声明。

    它们可以在编译时访问,您可以在实例化之前/不实例化类时进行访问,整个类中只有一个静态字段的副本可用,即,静态字段的值在所有对象中都相同。您可以使用static关键字定义一个静态字段。

  • 局部变量-这些变量属于方法/块/构造函数并在其中声明/定义。这些变量的范围位于方法(或块或构造函数)之内,执行后将被销毁。

Variablen im try-Block

Wenn daher eine Variable im try-Block (und überall sonst) deklariert wird, dann liegt diese Variable im lokalen Bereich dieses bestimmten Blocks. Der Lebenszyklus dieser Variable endet nach der Ausführung dieses Blocks. Daher können Sie keine Variablen, die in einem äußeren Block deklariert wurden, aufrufen.

Beispiel

In diesem Beispiel haben wir eine Variable namens result deklariert und versucht, auf sie im finally-Block zuzugreifen. Dies führt bei der Kompilierung zu einem Kompilierungsfehler.

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("Array: ",+Arrays.toString(arr));
      System.out.println("Wählen Sie den Nenner und den Zähler (nicht 0) aus diesem Array aus (geben Sie Positionen 0 bis 5)");
      int a = sc.nextInt();
      int b = sc.nextInt();
      try {
         int result = (arr[a])/(arr[b]);
      }catch(Exception e) {
         System.out.println("Es ist eine Ausnahme aufgetreten");
      } finally {
         System.out.println("Dies ist der finally-Block");
         System.out.println("Ergebnis von ",+arr[a]+"/"+arr[b]+: "+result);
      }
   }
}

Ausgaberesultat

ExceptionExample.java:21: Fehler: Symbol nicht gefunden
      System.out.println("Ergebnis von ",+arr[a]+"/"+arr[b]+: "+result);
                                                            ^
   Symbol: Variable result
   Position: class ExceptionExample
1 Fehler