exception에 대하여

2025. 1. 15. 09:17·Back End/JAVA

⭐️ exception이란 ?

코딩을 하다보면 코드를 잘못 짜거나 , 실행도중에 에러가 나는 경우를 볼 수 있을 것이다.

에러는 여러가지가 있지만 대표적으로 컴파일 에러 , 런타임에러 등이있다.

이를 예외라고 하는데,  예외가 exception이다.

이런 "예외"가 발생했을때 "처리"하는 방법을 "예외처리"라고 한다.

오늘은 이 에러의 종류 및 Java에서 예외처리란것을 알아볼 것이다.

 

⭐️ 에러의 종류

에러의 종류에는

 

시스템 에러 : 컴퓨터의 오작동으로 발생하는 에러

컴파일 에러 : 소스코드 문법상의 오류 (개발자 실수)

런타임 에러 : 코드상으로 문제가 없지만 프로그램 실행도중 발생하는 에러

논리 에러 : 문법적으로도 문제가 없고 , 실행했을때도 문제가 없지만

프로그램의 의도와 맞지 않는 동작이나 결과가 나타나는 에러

 

🧐 예외 처리를 하는 목적 ?

 

예외를 처리하지 않고 그대로 예외가 발생할 경우 프로그램이 비정상적으로

종료될 수 있기 때문에 이를 방지하기 위해 예외처리를 한다.

 

방법에는 2가지가 존재한다.

 

1. try - catch문을 이용한다

2. trows를 이용 ( 떠넘기기 ) 

 


 

[ method1 코드 ]

public void method01() throws InputMismatchException , ArithmeticException{
    Scanner sc = new Scanner(System.in);
    System.out.print("a/b... a : ");
    int a = sc.nextInt();

    System.out.print("a/b... b : ");
    int b = sc.nextInt();

    System.out.printf("%d / %d = %d\n", a, b, a / b);
    System.out.println("계산종료");
}

try-catch를 이용한 예외처리

 

위와같이 숫자를 0으로 나눈경우 ArithmeticException에러가 발생하게 된다.

 

예외가 발생함과 동시에 new ArithmeticException 객체가 생성되면서 이를 

처리해줘야 한다. -> 예외처리를 하지 않으면 해당 에러코드가 보임

 

🧐 그러면 예오 처리는 어디서 해야하는가 ?

 

바로 에러가 발생한 메서드를 호출하는 메서드로 가야한다 ‼️

 

[ main 코드 ]

public static void main(String[] args) {
    RunException re = new RunException();
    try {
        re.method01();
    } catch (ArithmeticException e) {
        System.out.println("수학적 에러발생");
        e.printStackTrace();
    } catch (InputMismatchException e) {
        System.out.println("입력 오류 발생");
        e.printStackTrace();
    }
}

 

현재 main에서 method1()을 호출하고 있기때문에 위에서 말한 2가지 방법중

한가지를 선택해 예외처리를 해줘야한다.

 

그중에서 main코드는 try-catch를 이용해 예외처리를 한 상황이다.

 

try{ } 안에 실행될 코드를 작성하고 , 만약 에러가 발생할 시에 catch { } 로 넘어가게 된다.

 

이때 catch() 안에는 해당 예외 또는 , 그 예외의 부모를 작성해주면 된다.

 


 

예외처리는 Java가 제공하는 예외말고도 본인이 직접 예외를 생성할 수 있다.

 

 

[ CustomException 코드 ]

public class CustomException extends Exception {

    public CustomException() {
    }

    public CustomException(String message) {
        super(message);
    }
}

 

우선 본인이 만든 예외를 만들고 , Exception을 상속받고  , 그 예외를 spuer()를 통해 바꿔보겠다.

 

[ 예외 발생 코드 ]

 public void methodD() throws CustomException{
    throw new CustomException("나만의 이유로 에러 발생");  // 예외 직접 발생
}

 

예외를 throw new CustomExceptio()으로 발생시켜주고 그 발생한 예외 내용은

"나만의 이유로 에러 발생" 을 넣었다. 그 예외는 CustomException class의

생성자를 통해 예외 메세지 문구가 변경되었다.

 

[ main 코드 ]

public static void main(String[] args) {
    RunException re  = new RunException();
    try {
        re.methodD();
    } catch (CustomException e) {
        throw new RuntimeException(e);
    }
}

 

methodD()에서 예외처리를 thorw로 떠념겼기 때문에 main에서 처리를 해줘야한다.

이때도 위와 마찬가지로 try-catch를 통해 예외처리를  해주었다.

 

main에서도 throws를 통해 예외를 떠넘길 수 있다. 

하지만 main이 예외를 떠넘기면 받을 곳이 없기때문에 그냥 종료가 된다.

 

CustomException을 이용한 예외를 처리

 

 


 

 

예외 처리는 Java에서 제공하는 메서드 , 인터페이스 등에서
가져와 사용할때 예외처리를 꼭 해줘야하는 경우가 많기 때문에
예외처리를 꼭 잘 해주어야 한다 ‼️

'Back End > JAVA' 카테고리의 다른 글

쓰레드에 대하여  (0) 2025.01.20
제네릭에 대하여  (0) 2025.01.17
instanceof에 대하여  (0) 2025.01.13
상속에 대하여  (3) 2025.01.11
접근 제한자에 대하여  (1) 2025.01.09
'Back End/JAVA' 카테고리의 다른 글
  • 쓰레드에 대하여
  • 제네릭에 대하여
  • instanceof에 대하여
  • 상속에 대하여
KoesJin
KoesJin
hEELo
  • KoesJin
    Seok DevLog
    KoesJin
  • 전체
    오늘
    어제
    • 분류 전체보기 (109)
      • Back End (31)
        • DataBase (15)
        • JAVA (12)
        • JDBC (4)
      • Front End (9)
        • HTML5 & CSS (3)
        • Java Script (6)
        • REACT (0)
      • Server (9)
        • JSP - TomCat - Servlet (7)
        • Spring Boot (2)
      • GitHub (1)
      • IT 지식 (기술면접 대비) (20)
      • Weekly TIL (39)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    css
    INNER JOIN
    commit
    DDL
    weekly til - day 40
    GC
    order by
    weekly til - day 41
    MVC 패턴
    weekly til - day 38
    select
    View
    where
    weekly til - day 39
    dml
    exception
    from
    DAO
    순서에 대하여
    weekly til - day 43
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
KoesJin
exception에 대하여
상단으로

티스토리툴바