diff --git a/core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java new file mode 100644 index 0000000000..88a8696053 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java @@ -0,0 +1,23 @@ +package com.baeldung.sneakythrows; + +import lombok.SneakyThrows; + +public class SneakyRunnable implements Runnable { + + @SneakyThrows + public void run() { + try { + throw new InterruptedException(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + try { + new SneakyRunnable().run(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java new file mode 100644 index 0000000000..847aaa7249 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java @@ -0,0 +1,25 @@ +package com.baeldung.sneakythrows; + +import java.io.IOException; + +public class SneakyThrows { + + + public static void sneakyThrow(Throwable e) throws E { + throw (E) e; + } + + public static void throwsSneakyIOException() { + sneakyThrow(new IOException("sneaky")); + } + + + public static void main(String[] args) { + try { + throwsSneakyIOException(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + } +} diff --git a/core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java new file mode 100644 index 0000000000..cd31f545b9 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java @@ -0,0 +1,17 @@ +package com.baeldung.sneakythrows; + +import org.junit.Test; + +import static junit.framework.TestCase.assertEquals; + +public class SneakyRunnableTest { + + @Test + public void whenCallSneakyRunnableMethod_thenThrowException() { + try { + new SneakyRunnable().run(); + } catch (Exception e) { + assertEquals(InterruptedException.class, e.getStackTrace()); + } + } +} diff --git a/core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java new file mode 100644 index 0000000000..e033ca062d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java @@ -0,0 +1,18 @@ +package com.baeldung.sneakythrows; + +import org.junit.Test; + +import static junit.framework.TestCase.assertEquals; + +public class SneakyThrowsTest { + + @Test + public void whenCallSneakyMethod_thenThrowSneakyException() { + try { + SneakyThrows.throwsSneakyIOException(); + } catch (Exception ex) { + assertEquals("sneaky", ex.getMessage().toString()); + } + } + +}