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

Java에서 메인 스레드의 예외를 처리하는 방법은 무엇인가요?

예외는 프로그램 실행 중 발생하는 문제(실행 시 오류)입니다. 예외가 발생하면 프로그램이 갑자기 종료되고 예외가 발생한 행 이후의 코드는 결코 실행되지 않습니다.

예제

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