1package eu.siacs.conversations.utils;
2
3import android.content.Context;
4
5import java.io.FileNotFoundException;
6import java.io.IOException;
7import java.io.OutputStream;
8import java.io.PrintWriter;
9import java.io.StringWriter;
10import java.io.Writer;
11import java.lang.Thread.UncaughtExceptionHandler;
12
13public class ExceptionHandler implements UncaughtExceptionHandler {
14
15 private UncaughtExceptionHandler defaultHandler;
16 private Context context;
17
18 public ExceptionHandler(Context context) {
19 this.context = context;
20 this.defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
21 }
22
23 @Override
24 public void uncaughtException(Thread thread, Throwable ex) {
25 Writer result = new StringWriter();
26 PrintWriter printWriter = new PrintWriter(result);
27 ex.printStackTrace(printWriter);
28 String stacktrace = result.toString();
29 printWriter.close();
30 try {
31 OutputStream os = context.openFileOutput("stacktrace.txt",
32 Context.MODE_PRIVATE);
33 os.write(stacktrace.getBytes());
34 os.flush();
35 os.close();
36 } catch (FileNotFoundException e) {
37 // TODO Auto-generated catch block
38 e.printStackTrace();
39 } catch (IOException e) {
40 // TODO Auto-generated catch block
41 e.printStackTrace();
42 }
43 this.defaultHandler.uncaughtException(thread, ex);
44 }
45
46}