From 01529c3202c9750a900380eb1fc2f289182fb1a0 Mon Sep 17 00:00:00 2001 From: alincojanu Date: Sat, 2 Sep 2017 20:38:04 +0300 Subject: [PATCH] sneaky throws (#2505) * alin.cojanu25@gmail.com * add junit tests * core-java - sneaky throws * delete project spring_sample_annotations and spring_sample_xml ->not intended for this article --- .../baeldung/sneakythrows/SneakyRunnable.java | 23 +++++++++++++++++ .../baeldung/sneakythrows/SneakyThrows.java | 25 +++++++++++++++++++ .../sneakythrows/SneakyRunnableTest.java | 17 +++++++++++++ .../sneakythrows/SneakyThrowsTest.java | 18 +++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java create mode 100644 core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java create mode 100644 core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java create mode 100644 core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java 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()); + } + } + +}