본문 바로가기
Java/Java이론

Java 예외 처리

by P_eli 2023. 11. 1.
728x90
반응형

Java 언어는 안정성과 신뢰성을 중시하는 언어로, 예외 처리(Exception Handling)는 이러한 목표를 달성하는 데 필수적인 기능 중 하나입니다. 예외 처리는 프로그램이 실행 중에 발생할 수 있는 오류와 예외 상황을 다루고, 이로부터 복구하거나 오류를 보고하는 방법을 제공합니다.

 

1. 예외 란?

예외(Exception)는 프로그램 실행 중에 발생하는 오류 또는 예외적인 상황을 가리킵니다. 이러한 상황은 프로그램이 예기치 않은 동작을 할 때 발생하며, 일반적으로 오류 메시지와 함께 예외 객체로 표현됩니다.

2. 예외 처리의 목적

예외 처리의 주요 목적은 다음과 같습니다:

  • 프로그램의 안정성 향상: 예외 처리를 통해 프로그램이 충돌하는 것을 방지하고, 예외 상황을 처리하여 프로그램이 계속 실행될 수 있도록 합니다.
  • 오류 메시지 제공: 예외를 통해 오류 유형과 원인을 식별하고 오류 메시지를 생성하여 디버깅 및 유지 관리를 용이하게 합니다.
  • 복구 기회 제공: 예외 처리를 통해 프로그램은 예외 상황을 처리하고 정상 상태로 돌아갈 수 있는 기회를 얻습니다.

3. try-catch 블록

Java에서 예외 처리는 try와 catch 블록을 사용하여 수행됩니다. try 블록 내에서 예외가 발생할 수 있는 코드를 작성하고, catch 블록은 해당 예외를 처리하는 데 사용됩니다.

 

try {
    // 예외 발생 가능한 코드
} catch (예외타입 예외변수) {
    // 예외 처리 코드
}

 

4. 예외 종류

Java에는 여러 종류의 예외가 있으며, 예외 클래스 계층 구조로 정의됩니다. 가장 일반적인 예외 종류로 RuntimeException을 상속받는 예외와 그렇지 않은 예외가 있습니다. 예외의 종류에 따라 적절한 처리 방법을 선택해야 합니다.

5. finally 블록

finally 블록은 try와 catch 블록 다음에 나올 수 있는 선택적인 블록으로, 예외 발생 여부와 관계없이 항상 실행됩니다. 주로 리소스 해제와 관련된 코드를 작성하는 데 사용됩니다.

try {
    // 예외 발생 가능한 코드
} catch (예외타입 예외변수) {
    // 예외 처리 코드
} finally {
    // 항상 실행되는 코드
}

 

다음은 예제코드 입니다.

import java.util.InputMismatchException;
import java.util.Scanner;

public class Finally{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		try {
			int num1 = sc.nextInt();
			int num2 = 10 / num1;
			System.out.println(num2);
		}catch(ArithmeticException e) {
			String str = e.getMessage();
			System.out.println(str);
			if(str.equals("/ by zero"))
				System.out.println("0으로 나눌 수 없습니다.");
		}catch(InputMismatchException e) {
			System.out.println(e.getMessage());
			//printStackTrace();
		}finally {
			System.out.println(("코드종료"));
		}
	}
}

예외가 발생해도 반드시 실행되어야 하는 문장이라면 위 코드와 같이 finally문 안에 작성을 해주면 됩니다.

실행을 하고 콘솔창에 문자 A을 입력 합니다.

 

실행 결과

6. 예외 처리의 Best Practice

  • 예외 처리는 예외의 유형과 상황에 따라 세밀하게 처리해야 합니다.
  • 예외를 무시하지 말고 적절한 로깅 또는 사용자에게 오류 메시지를 표시해야 합니다.
  • 예외 처리 코드는 가독성 있고 유지 보수가 용이하도록 작성해야 합니다.

 

728x90
반응형