English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
예외는 프로그램 실행 중 발생하는 문제로, 실행 시 예외라고 합니다. 이해하기 위해 다른 방식으로 이를 바라보겠습니다.
일반적으로, 프로그램을 컴파일할 때, 컴파일 시에 .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)