[Day 8 | Java] throw

y♡ding·2024년 10월 23일
0

데브코스 TIL

목록 보기
42/163

throw는 자바에서 예외를 명시적으로 발생시키는 데 사용하는 키워드입니다. 특정 조건에서 개발자가 직접 예외를 발생시키고, 그 예외를 처리할 수 있도록 하는 기능을 제공합니다. 주로 사용자 정의 예외를 던지거나, 특정 로직에서 의도적으로 예외를 발생시킬 때 사용됩니다.

public class Example {
    public static void main(String[] args) {
        throw new NullPointerException("강제 예외 발생");
    }
}

throw를 사용하는 상황

  • 검증 조건에 맞지 않을 때: 입력값이 유효하지 않거나 특정 조건을 충족하지 못할 경우 명시적으로 예외를 던져 오류를 처리하도록 할 수 있습니다.
  • 사용자 정의 예외: 사용자가 정의한 예외를 직접 발생시켜 특정 상황에 맞는 오류 처리를 유도할 수 있습니다.
  • 프로그램 로직에서 특정 상태를 명확히 알릴 때: 프로그램에서 비정상적인 흐름이나 중단을 요구하는 경우 직접 예외를 던질 수 있습니다.

throwthrows의 차이

  • throw: 실제로 예외를 발생시키는 데 사용됩니다.
    • 예시: throw new Exception("강제 예외 발생");
    • 예외를 명시적으로 발생시키는 키워드입니다.
  • throws: 메서드 선언부에서 예외가 발생할 가능성이 있음을 선언하는 키워드입니다.
    • 예시: void method() throws IOException
    • 해당 메서드가 특정 예외를 던질 수 있음을 명시하며, 호출하는 쪽에서 예외를 처리해야 합니다.

package com.exception;

public class ExceptionEx09 {
    public void method1( int num ) {
        System.out.println( "시작" );

        try {
            // 입력값에 대한 검사
            if (num >= 100) {
                System.out.println("정상 입력");
            } else {
                // 입력값이 100 미만일 때 예외를 발생시킴 (throw 사용)
                throw new Exception("비정상 입력");
            }
        } catch (Exception e ) {
            // 예외 발생 시 처리 코드 (예외 메시지를 출력)
            System.out.println( e.getMessage() );
        }

        System.out.println( "끝" );
    }

    // 예외를 직접 처리하지 않고 호출한 곳에서 처리하도록 예외를 던짐 (throws 사용)
    public void method2(int num) throws Exception {
        System.out.println("시작");

        // 입력값에 대한 검사
        if (num >= 100) {
            System.out.println("정상 입력");
        } else {
            // 입력값이 100 미만일 때 예외를 발생시킴 (throw 사용)
            throw new Exception("비정상 입력");
        }

        System.out.println("끝");
    }


    public static void main(String[] args) {
        ExceptionEx09 ex = new ExceptionEx09();
        ex.method1(10); // method1에서 발생한 예외는 내부에서 처리됨
        try {
            ex.method2(10); // method2에서 발생한 예외는 호출한 곳에서 처리함
        } catch (Exception e) {
            // method2에서 던진 예외를 처리함
            System.out.println(e.getMessage());
        }
    }
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN