diff options
author | desperateCoder <echotodevnull@gmail.com> | 2020-06-15 19:47:47 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2020-06-15 19:47:47 +0300 |
commit | 6e5e60ac18fd84dca875edf588e383fb8474c828 (patch) | |
tree | e219f7d8180be9cb82a118ce92f17b94be6acf0a /app/src/main/java/it/niedermann/nextcloud/deck/exceptions | |
parent | 17be1394bc928ec56a352eec188d8e68d6a95519 (diff) |
#528 better logging of parsing errors
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/exceptions')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/exceptions/TraceableException.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/exceptions/TraceableException.java b/app/src/main/java/it/niedermann/nextcloud/deck/exceptions/TraceableException.java new file mode 100644 index 000000000..a53ce8c1f --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/exceptions/TraceableException.java @@ -0,0 +1,34 @@ +package it.niedermann.nextcloud.deck.exceptions; + +import it.niedermann.nextcloud.deck.DeckLog; + +public class TraceableException extends RuntimeException { + + private TraceableException(String message, Throwable cause) { + super(message, cause); + } + + public static void makeTraceableIfFails(Runnable runnable, Object... args) { + try { + runnable.run(); + } catch (Throwable t) { + String message = "Sorry, a wild error appeared!\n" + + "### If you want to tell us about the following issue, " + + "please make sure to censor sensitive data beforehand! ###\n" + + "Failed to run traceable code"; + if (args != null && args.length > 0) { + message += " with arguments:\n"; + for (Object arg : args) { + message += (arg == null ? "null" : arg.toString())+"\n"; + } + } else { + message += ":\n"; + } + + message += "Cause: " + t.getLocalizedMessage(); + TraceableException ex = new TraceableException(message, t); + DeckLog.logError(ex); + throw ex; + } + } +} |