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

Java 프로그램에서 예외를 처리하지 않으면 어떤 일이 일어날까요?

예외는 프로그램 실행 중 발생하는 문제로, 실행 시 예외라고 합니다. 이해하기 위해 다른 방식으로 이를 바라보겠습니다.

일반적으로, 프로그램을 컴파일할 때, 컴파일 시에 .class 파일이 생성되지 않으면 이 파일은 Java의 실행 파일로 간주되며, 이 파일을 매번 실행할 때마다.class파일을 열 때마다, 프로그램의 모든 행이 문제 없이 실행되어야 합니다. 그러나 특정 상황에서 JVM이 프로그램을 실행할 때 모호한 상황을 만날 수 있습니다. 즉, 어떻게 해야 할지 모르는 상황입니다.

이것은 몇 가지 예제 계획입니다-

  • 만약 배열의 크기가10를 표시합니다.11요소.

  • 숫자를 0으로 나누려고 시도할 때(결과는 무한대이며 JVM이 평가할 수 없습니다).

이 상황은 예외로 불립니다. 가능한 모든 예외는 предопределенные 클래스로 표현되며, 모든 예외 클래스는 java.lang 패키지에서 찾을 수 있습니다. 또한 자신의 예외를 정의할 수도 있습니다.

일부 예외는 컴파일 시에 알려지는 예외로, 컴파일 시 예외 또는 검사된 예외라고 합니다.

이러한 예외가 발생하면 try 블록을 사용하여 처리해야 합니다.-catch 블록을 사용하여 처리하거나 throws 키워드를 사용하여 예외를 던져서 처리를 지연합니다(처리를 미뤼기)。

만약 예외를 처리하지 않는다면

예외가 발생하면 처리하지 않으면 프로그램이 갑자기 종료되고, 예외를 일으킨 행 이후의 코드도 실행되지 않습니다.

예제

일반적으로, 배열의 크기는 고정되어 있으며 각 요소에 인덱스를 사용하여 접근합니다. 예를 들어, 우리는 크기가7의 배열. 그런 다음, 해당 배열 요소에 접근하기 위한 유효한 표현식은 a [0]에서 a [6](길이가1)。

–ve 값이나 배열 크기보다 크거나 같은 값을 사용할 때마다ArrayIndexOutOfBoundsException를 요청했습니다.

예를 들어, 다음 코드를 실행하면 배열의 요소를 표시하고 인덱스를 입력하도록 요청합니다. 배열의 크기는7،그래서 유효 인덱스는 0에서6를 요청했습니다.

예제

import java.util.Arrays;
import java.util.Scanner;
public class AIOBSample {
   public static void main(String args[]){
      int[] myArray = {1254, 1458, 5687,1457, 4554, 5445, 7524};
      System.out.println("배열에 있는 요소는: ");
      System.out.println(Arrays.toString(myArray));
      Scanner sc = new Scanner(System.in);
      System.out.println("필요한 요소의 인덱스를 입력하세요: ");
      int element = sc.nextInt();
      System.out.println("지정된 인덱스에 있는 요소는 :: "+myArray[element]);
   }
}

하지만, 다음과 같은 출력을观察到하면, 우리는 인덱스가9의 요소는 유효한 인덱스가 아니기 때문에 인덱스 예외가 발생했습니다.ArrayIndexOutOfBoundsException으로 실행이 중단되었습니다.

런타임 예외

배열에 있는 요소는 다음과 같습니다:
[897, 56, 78, 90, 12, 123, 75]
필요한 요소의 인덱스를 입력하세요:
7
"main" 스레드에서 예외 발생 java.lang.ArrayIndexOutOfBoundsException: 7
   at AIOBSample.main(AIOBSample.java:12)

해결

이 문제를 해결하려면 try 블록에서-catch 블록에서 예외를 처리할 책임이 있는 코드를 포장하여 이 예외를 처리합니다.

import java.util.Arrays;
import java.util.Scanner;
public class AIOBSample {
   public static void main(String args[]){
      int[] myArray = {1254, 1458, 5687,1457, 4554, 5445, 7524};
      System.out.println("배열에 있는 요소는: ");
      System.out.println(Arrays.toString(myArray));
      try {
         Scanner sc = new Scanner(System.in);
         System.out.println("필요한 요소의 인덱스를 입력하세요: ");
         int element = sc.nextInt();
         System.out.println("지정된 인덱스에 있는 요소는 :: "+myArray[element]);
      }catch(ArrayIndexOutOfBoundsException ex) {
         System.out.println("올바른 인덱스를 입력하세요(0에서) 6);
      }
   }
}

출력 결과

배열에 있는 요소는 다음과 같습니다:
[1254, 1458, 5687, 1457, 4554, 5445, 7524]
필요한 요소의 인덱스를 입력하세요:
7
올바른 인덱스를 입력하세요(0에서) 6)