English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
예외는 프로그램 실행 중 발생하는 문제(실행 시 오류)입니다. 예외가 발생하면 프로그램이 갑자기 종료되고 예외가 발생한 행 이후의 코드는 결코 실행되지 않습니다.
import java.util.Scanner; public class ExceptionExample { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("첫 번째 숫자를 입력하세요:"); int a = sc.nextInt(); System.out.println("두 번째 숫자를 입력하세요:"); int b = sc.nextInt(); int c = a/b; System.out.println("결과는: "+c); } }
출력 결과
첫 번째 숫자를 입력하세요: 100 두 번째 숫자를 입력하세요: 0 thread "main"에서 java.lang.ArithmeticException 예외 발생: / by zero at ExceptionExample
Java에서는 예외가 두 가지 유형이 있습니다
체크된 예외 - 체크된 예외는 컴파일 시 발생하는 예외입니다. 이들도 컴파일 시 단순히 무시할 수 없습니다. 프로그래머는 이러한 예외에 주의해야 합니다(처리해야 합니다).
미체크된 예외 - 미체크된 예외는 실행 중에 발생하는 예외입니다. 이들도 실행 시 예외라고 불립니다. 이들은 프로그래밍 오류, 예를 들어 로직 오류나 API 사용 오류와 같은 것들도 포함됩니다. 컴파일 시 실행 시 예외는 무시됩니다.
运行时异常/未经检查的异常的显示模式为“线程主异常”,即,每当发生运行时异常时,消息均以该行开头。
下面的Java程序中,我们有一个大小为5的数组,并且试图访问第6个元素,这将生成ArrayIndexOutOfBoundsException。
public class ExceptionExample { public static void main(String[] args) { //创建大小为5的整数数组 int inpuArray[] = new int[5]; //배열을 채웁니다 inpuArray[0] = 41; inpuArray[1] = 98; inpuArray[2] = 43; inpuArray[3] = 26; inpuArray[4] = 79; //접근 인덱스가 배열 크기보다 큽니다 System.out.println( inpuArray[6]); } }
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 at MyPackage.ExceptionExample.main(ExceptionExample.java:14)
下面的示例中,我们尝试通过使用负数作为大小值来创建数组,这将生成NegativeArraySizeException。
public class Test { public static void main(String[] args) { int[] intArray = new int[-5]; } }
在执行时,该程序将生成一个运行时异常,如下所示。
Exception in thread "main" java.lang.NegativeArraySizeException at myPackage.Test.main(Test.java:6)
运行时异常可以处理并避免异常终止,但是Java中没有针对运行时异常的特定修复程序,具体取决于异常,所需更改代码的类型。
예를 들어, 위에 나열된 첫 번째 프로그램에서 ArrayIndexOutOfBoundsException를 수정하려면 다음과 같이 삭제해야 합니다/배열 접근 인덱스 위치를 크게 설정하는 행을 변경합니다.
public class ExceptionExample { public static void main(String[] args) { //Creating an integer array with size 5 int inpuArray[] = new int[5]; //배열을 채웁니다 inpuArray[0] = 41; inpuArray[1] = 98; inpuArray[2] = 43; inpuArray[3] = 26; inpuArray[4] = 79; //접근 인덱스가 배열 크기보다 큽니다 System.out.println( inpuArray[3]); } }
출력 결과
26