diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java index 0dfee18c..58678f6a 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java @@ -26,6 +26,8 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.function.Consumer; +import com.kingsrook.qqq.backend.core.utils.lambdas.UnsafeVoidVoidMethod; /******************************************************************************* @@ -183,4 +185,41 @@ public class ExceptionUtils } return (rs); } + + + + /*************************************************************************** + ** + ***************************************************************************/ + public static void tryIgnore(UnsafeVoidVoidMethod method) + { + try + { + method.run(); + } + catch(Throwable t) + { + /////////////////////////// + // ignore, as name says! // + /////////////////////////// + } + } + + + + /*************************************************************************** + ** + ***************************************************************************/ + public static void tryCatch(UnsafeVoidVoidMethod method, Consumer catcher) + { + try + { + method.run(); + } + catch(Throwable t) + { + catcher.accept(t); + } + } + } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java index bf84bb16..76e8d0c4 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.utils; +import java.util.concurrent.atomic.AtomicBoolean; import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QUserFacingException; @@ -29,6 +30,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* @@ -129,6 +131,30 @@ class ExceptionUtilsTest extends BaseTest + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testTryIgnore() + { + ExceptionUtils.tryIgnore(() -> ((Integer) null).toString()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testTryCatch() + { + AtomicBoolean didCatch = new AtomicBoolean(false); + ExceptionUtils.tryCatch(() -> ((Integer) null).toString(), e -> didCatch.set(true)); + assertTrue(didCatch.get()); + } + + + /******************************************************************************* ** Test exception class - lets you set the cause, easier to create a loop. *******************************************************************************/