aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/nullwire/trace/DefaultExceptionHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/nullwire/trace/DefaultExceptionHandler.java')
-rw-r--r--src/com/nullwire/trace/DefaultExceptionHandler.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/com/nullwire/trace/DefaultExceptionHandler.java b/src/com/nullwire/trace/DefaultExceptionHandler.java
new file mode 100644
index 0000000..e475888
--- /dev/null
+++ b/src/com/nullwire/trace/DefaultExceptionHandler.java
@@ -0,0 +1,46 @@
+package com.nullwire.trace;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.Thread.UncaughtExceptionHandler;
+import java.util.Random;
+
+import android.util.Log;
+
+public class DefaultExceptionHandler implements UncaughtExceptionHandler {
+
+ private static final String TAG = "UNHANDLED_EXCEPTION";
+
+ // Default exception handler
+ public void uncaughtException(Thread t, Throwable e) {
+ // Here you should have a more robust, permanent record of problems
+ final Writer result = new StringWriter();
+ final PrintWriter printWriter = new PrintWriter(result);
+ e.printStackTrace(printWriter);
+ try {
+ // Random number to avoid duplicate files
+ Random generator = new Random();
+ int random = generator.nextInt(99999);
+ // Embed version in stacktrace filename
+ String filename = G.APP_VERSION + "-" + Integer.toString(random);
+ Log.d(TAG, "Writing unhandled exception to: " + G.FILES_PATH + "/"
+ + filename + ".stacktrace");
+ // Write the stacktrace to disk
+ BufferedWriter bos = new BufferedWriter(new FileWriter(G.FILES_PATH
+ + "/" + filename + ".stacktrace"));
+ bos.write(result.toString());
+ bos.flush();
+ // Close up everything
+ bos.close();
+ } catch (Exception ebos) {
+ // Nothing much we can do about this - the game is over
+ ebos.printStackTrace();
+ }
+ Log.d(TAG, result.toString());
+ // FlurryAgent session has ended
+ t.getThreadGroup().destroy();
+ }
+}