logo

Java의 예외 처리

  1. 예외 처리
  2. 예외 처리의 장점
  3. 예외 클래스의 계층 구조
  4. 예외 유형
  5. 예외 예
  6. 예외가 발생할 수 있는 시나리오

그만큼 Java의 예외 처리 강력한 것 중 하나야 런타임 오류를 처리하는 메커니즘 애플리케이션의 정상적인 흐름이 유지될 수 있도록 합니다.

이 튜토리얼에서는 Java 예외, 유형, 확인된 예외와 확인되지 않은 예외의 차이점에 대해 알아봅니다.

균일한 혼합물

Java의 예외란 무엇입니까?

사전적 의미: 예외는 비정상적인 조건입니다.

Java에서 예외는 프로그램의 정상적인 흐름을 방해하는 이벤트입니다. 런타임에 던져지는 객체입니다.

예외 처리란 무엇입니까?

예외 처리는 ClassNotFoundException, IOException, SQLException, RemoteException 등과 같은 런타임 오류를 처리하는 메커니즘입니다.

예외 처리의 장점

예외 처리의 핵심 이점은 다음과 같습니다. 애플리케이션의 정상적인 흐름을 유지하기 위해 . 예외는 일반적으로 애플리케이션의 정상적인 흐름을 방해합니다. 그렇기 때문에 예외를 처리해야 합니다. 시나리오를 고려해 봅시다:

 statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10; 

Java 프로그램에 10개의 명령문이 있고 명령문 5에서 예외가 발생한다고 가정하십시오. 나머지 코드는 실행되지 않습니다. 즉, 문 6~10은 실행되지 않습니다. 그러나 예외 처리를 수행하면 나머지 명령문이 실행됩니다. 이것이 우리가 예외 처리를 사용하는 이유입니다. 자바 .

당신은 알고 있나요?
  • 확인된 예외와 확인되지 않은 예외의 차이점은 무엇입니까?
  • int data=50/0; 코드 뒤에서 무슨 일이 일어나는가?
  • 다중 catch 블록을 사용하는 이유는 무엇입니까?
  • finally 블록이 실행되지 않을 가능성이 있나요?
  • 예외 전파란 무엇입니까?
  • throw와 throws 키워드의 차이점은 무엇인가요?
  • 메서드 재정의와 함께 예외 처리를 사용하는 4가지 규칙은 무엇입니까?

Java 예외 클래스의 계층 구조

java.lang.Throwable 클래스는 두 개의 하위 클래스인 Exception과 Error에 의해 상속된 Java Exception 계층의 루트 클래스입니다. Java 예외 클래스의 계층 구조는 다음과 같습니다.

예외 처리 계층

Java 예외 유형

예외에는 주로 체크된 예외와 체크되지 않은 예외의 두 가지 유형이 있습니다. 오류는 확인되지 않은 예외로 간주됩니다. 그러나 Oracle에 따르면 다음과 같은 세 가지 유형의 예외가 있습니다.

  1. 확인된 예외
  2. 확인되지 않은 예외
  3. 오류
예외 처리 계층

확인된 예외와 확인되지 않은 예외의 차이점

1) 확인된 예외

RuntimeException 및 Error를 제외하고 Throwable 클래스를 직접 상속하는 클래스를 확인된 예외라고 합니다. 예를 들어 IOException, SQLException 등이 있습니다. 확인된 예외는 컴파일 타임에 확인됩니다.

2) 확인되지 않은 예외

RuntimeException을 상속하는 클래스를 확인되지 않은 예외라고 합니다. 예를 들어 ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException 등이 있습니다. 확인되지 않은 예외는 컴파일 타임에는 확인되지 않지만 런타임에는 확인됩니다.

3) 오류

오류는 복구할 수 없습니다. 오류의 예로는 OutOfMemoryError, VirtualMachineError, AssertionError 등이 있습니다.

Java 예외 키워드

Java는 예외를 처리하는 데 사용되는 5개의 키워드를 제공합니다. 다음 표에서는 각각에 대해 설명합니다.

예어설명
노력하다'try' 키워드는 예외 코드를 배치해야 하는 블록을 지정하는 데 사용됩니다. 이는 try 블록만 사용할 수 없다는 의미입니다. try 블록 뒤에는 catch 또는 finally가 와야 합니다.
잡다'catch' 블록은 예외를 처리하는 데 사용됩니다. 앞에는 try 블록이 와야 합니다. 이는 catch 블록만 사용할 수 없음을 의미합니다. 나중에 finally 블록이 이어질 수 있습니다.
마지막으로'finally' 블록은 프로그램의 필요한 코드를 실행하는 데 사용됩니다. 예외 처리 여부에 관계없이 실행됩니다.
던지다'throw' 키워드는 예외를 발생시키는 데 사용됩니다.
던진다'throws' 키워드는 예외를 선언하는 데 사용됩니다. 메서드에서 예외가 발생할 수 있음을 지정합니다. 예외가 발생하지 않습니다. 항상 메소드 서명과 함께 사용됩니다.

Java 예외 처리 예

예외를 처리하기 위해 try-catch 문을 사용하는 Java 예외 처리의 예를 살펴보겠습니다.

JavaExceptionExample.java

 public class JavaExceptionExample{ public static void main(String args[]){ try{ //code that may raise exception int data=100/0; }catch(ArithmeticException e){System.out.println(e);} //rest code of the program System.out.println('rest of the code...'); } } 
지금 테스트해보세요

산출:

 Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code... 

위의 예에서 100/0은 try-catch 블록에 의해 처리되는 ArithmeticException을 발생시킵니다.

Java 예외의 일반적인 시나리오

확인되지 않은 예외가 발생할 수 있는 몇 가지 시나리오가 있습니다. 그것들은 다음과 같습니다:

1) ArithmeticException이 발생하는 시나리오

숫자를 0으로 나누면 ArithmeticException이 발생합니다.

 int a=50/0;//ArithmeticException 

2) NullPointerException이 발생하는 시나리오

어떤 항목에 null 값이 있는 경우 변하기 쉬운 , 변수에 대한 작업을 수행하면 NullPointerException이 발생합니다.

 String s=null; System.out.println(s.length());//NullPointerException 

3) NumberFormatException이 발생하는 시나리오

변수나 숫자의 형식이 일치하지 않으면 NumberFormatException이 발생할 수 있습니다. 우리가 문자가 있는 변수; 이 변수를 숫자로 변환하면 NumberFormatException이 발생합니다.

 String s='abc'; int i=Integer.parseInt(s);//NumberFormatException 

4) ArrayIndexOutOfBoundsException이 발생하는 시나리오

배열이 해당 크기를 초과하면 ArrayIndexOutOfBoundsException이 발생합니다. ArrayIndexOutOfBoundsException이 발생하는 다른 이유가 있을 수 있습니다. 다음 진술을 고려하십시오.

 int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException 

Java 예외 색인

  1. Java Try-Catch 블록
  2. Java 다중 캐치 블록
  3. Java 중첩 시도
  4. 자바 최종 차단
  5. 자바 던지기 키워드
  6. Java 예외 전파
  7. Java Throws 키워드
  8. 자바 던지기 vs 던지기
  9. 자바 최종 vs 최종 vs 최종화
  10. 메소드 재정의를 통한 Java 예외 처리
  11. Java 사용자 정의 예외