Java Lombok | throws 자동 지정 - @SneakyThrows

@SneakyThrows

@SneakyThrows 어노테이션을 메소드에서 선언하면, 체크 예외가 내부에서 발생되어도 throws를 넣지 않아도 된다.

  • sneaky 는 “몰래"라는 뜻이다.
package com.devkuma.tutorial.lombok;

import lombok.SneakyThrows;

public class SneakyThrowsTutorial {
    public static void main(String[] args) {
        method();
    }

    @SneakyThrows
    private static void method() {
        throw new Exception("test");
    }
}

실행 결과

Exception in thread "main" java.lang.Exception: test
    at com.devkuma.tutorial.lombok.SneakyThrowsTutorial.method(SneakyThrowsTutorial.java:12)
    at com.devkuma.tutorial.lombok.SneakyThrowsTutorial.main(SneakyThrowsTutorial.java:7)

지정한 예외만 무시

package com.devkuma.tutorial.lombok;

import lombok.SneakyThrows;

import java.io.IOException;

public class SneakyThrowsTutorial2 {
    public static void main(String[] args) {
        method();
    }

    @SneakyThrows(IOException.class)
    private static void method() {
        try {
            throw new Exception("test");
        } catch (Exception e) {
            // catch가 없으면 에러가 발생한다.
        }

        throw new IOException();
    }
}

실행 결과

Exception in thread "main" java.io.IOException
    at com.devkuma.tutorial.lombok.SneakyThrowsTutorial2.method(SneakyThrowsTutorial2.java:20)
    at com.devkuma.tutorial.lombok.SneakyThrowsTutorial2.main(SneakyThrowsTutorial2.java:9)
  • value로 예외 Class 객체를 전달하여, 지정한 예외만 무시할 수 있게 된다.



최종 수정 : 2024-01-18