[Java] - 예외처리(try catch 구문)

2025. 1. 31. 21:44·자바
728x90
반응형
SMALL

https://www.youtube.com/watch?v=NwNK-dj-HG4&list=PLlTylS8uB2fA5PevGI6ARN6v-VQWmqaix&index=10

참고 영상

예외처리 클래스란?

  • 모든 예외 클래스는 Throwable클래스를 상속받고 있다.
  • Exception은 수많은 자식 클래스가 있다. ex) io, system, sql, 등등..
  • RuntimeException은 Unchecked Exception이며, 그 외  Exception은 Checked Exception으로 볼 수 있다.

Unchecked Exception

로직을 어떻게 구성하냐에 따라 오류가 발생할 수도 있고 발생을 안할 수도 있다.

  • 처리여부: 명시적 처리 강제하지 않음
  • 확인시점: 실행 중 단계
  • 예외발생시 트랜잭션: 롤백
  • 대표예외: NullPointer, illegal Argument, IndexOutOfBound, System

Checked Exception

명확하게 코드에서 보이는 오류이다. 틀린부분이 보이는 것을 의미한다.(코드에서 빨간줄)

  • 처리여부: 반드시 예외 처리 필요
  • 확인시점: 컴파일 단계
  • 예외발생시 트랜잭션: 롤백하지 않음
  • 대표 예외: IO, SQL

예외처리 메소드를 직접 처리하기 위해 try, catch, finally 키워드를 이용하는데 Try Catch블록에 대해서 알아보자

try {
	// 예외가 발생할 것으로 예상되는 코드

} catch (Exception1 e1) {
	// Exception1 이 발생했을 경우 실행되는 코드
} catch (Exception2 e2) {
	// Exception2 이 발생했을 경우 실행되는 코드
}  catch (Exception3 e3) {
	// Exception3 이 발생했을 경우 실행되는 코드
}

기본적인 Try Catch 블록이다.

Try 블록

  • 예외가 발생할 가능성이 있는 코드 범위를 지정하는 블록

Catch 블록

  • try블록에서 예외가 발생할 시에 실행되는 블록
  • 예외타입 매개변수는 try블록에서 발생할 수 있는 예외타입을 담고 있다.
  • 다양한 예외가 발생할 수 있는 경우에는 여러개의  catch블록을 설정 할 수 있다.

 

Finally블록

  • Finally블록은 예외와 상관없이 무조건 실행되는 블록이다.
  • 필수적으로 사용해야 하는 블록은 아니면 필요한 경우에 사용하면된다.
package exception;

import java.util.Scanner;

/**
 * 예외처리 예시
 * thinkground.studio
 * YouTube : Around Hub Studio
 * @author Flature
 */
public class TryCatch {
	//TryCatch클래스 생성자
    public TryCatch() {

        Scanner sc = new Scanner(System.in);
        //입력받은 값
        String input = sc.next();
    //맨처음에 try구문을 실행하는데 Integer.parseInt구문에서 예외상황 발생 시 catch구문으로 넘어가서
        //변경되지 못한 값을 작성한다. NumberFormatException은 문자열을 숫자로 변경할 수 없을 때 발생하는 예외이다.
        try {
            //입력받은 값이 숫자일 때는 system에서 숫자: changedInput실행
            int changedInput = Integer.parseInt(input);

            System.out.println("숫자 : " + changedInput);
        }
        //catch구문으로 가서 변경되지 못한값 작성
        //numberformatexception으로 catch구문 작성
        catch (NumberFormatException e) {
            System.out.println("변경되지 못한 값 : " + input);
            //finally는 예외상황과 관계없이 무조건 실행되는 구문이다.
        } finally {//마지막에는 finally 구문(예외상황과 관계없이 실행되는 구문)
            System.out.println("finally 구문");
        }
    }

    public static void main(String[] args) {
        new TryCatch();
    }
}

위 코드는 try catch finally를 담고있는 클래스이다.

catch 문을 보면 예외클래스 타입과 변수 e 가 선언되어 있는데, 만일 try문에서 예외가 발생하면 그 예외에 맞는 예외클래스가 catch문에 argument로 있으면 예외상황에 대비가능하다.

현재 여기서는 NumberFormatException이라는 예외처리 인자가 있는데 이 Exception은 문자열을 숫자로 바꿀 수 없을 때 발생하는 예외이다. 

728x90
반응형
LIST

'자바' 카테고리의 다른 글

자바 - String 클래스  (0) 2025.04.15
[자바/Java] - 메모리 구조  (0) 2025.02.26
[Java/자바] - ASCII(아스키코드) 문자 ↔ 숫자  (1) 2025.02.24
'자바' 카테고리의 다른 글
  • 자바 - String 클래스
  • [자바/Java] - 메모리 구조
  • [Java/자바] - ASCII(아스키코드) 문자 ↔ 숫자
주우우우우우우욱
주우우우우우우욱
    반응형
    250x250
  • 주우우우우우우욱
    주우우우우우우욱의 블로그
    주우우우우우우욱
  • 전체
    오늘
    어제
    • 분류 전체보기 (132)
      • 백준[파이썬] (57)
      • Spring (31)
      • CS (1)
      • 자바 (4)
      • 백준[자바] (20)
      • 프로그래머스 (5)
      • 토이프로젝트 (1)
      • SWEA (2)
      • MSA (8)
      • CI&CD (1)
      • AWS (0)
      • Kafka (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SWEA
    백준
    코딩테스트
    JWT
    스프링
    스프링부트
    스프링 클라우드
    스프링 부트와 AWS로 혼자 구현하는 웹 서비스
    누적합
    테스트코드
    재귀
    Java
    AOP
    프로그래머스
    자바
    SpringBoot
    JPA
    spring
    MSA
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
주우우우우우우욱
[Java] - 예외처리(try catch 구문)
상단으로

티스토리툴바