aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/nullwire/trace/DefaultExceptionHandler.java
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-06-10 08:27:58 +0000
committerKenny Root <kenny@the-b.org>2009-06-10 08:27:58 +0000
commitd62e6eebae78c8d59c46517fd5cea9be6942f5ba (patch)
tree620ce7a5e365d71097bb839fcfa2f81890a6a234 /src/com/nullwire/trace/DefaultExceptionHandler.java
parente7e79db923cd98bfd804ae2dc8383d949b5ddddb (diff)
downloadconnectbot-d62e6eebae78c8d59c46517fd5cea9be6942f5ba.tar.gz
connectbot-d62e6eebae78c8d59c46517fd5cea9be6942f5ba.tar.bz2
connectbot-d62e6eebae78c8d59c46517fd5cea9be6942f5ba.zip
Add stack trace reporting
* When an unhandled exception occurs, the exception handler writes it to a file in addition to all ther other stuff that normally happens * The next time ConnectBot is started up, the user is prompted as to whether they want to submit the stack trace to aid in finding bugs. * If the user agrees or declines, the stack traces are deleted. git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@277 df292f66-193f-0410-a5fc-6d59da041ff2
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();
+ }
+}