package hirondelle.movies.exception;
import hirondelle.movies.util.Util;
import hirondelle.movies.util.ui.UiUtil;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public final class ExceptionHandler implements Thread.UncaughtExceptionHandler {
@Override public void uncaughtException(Thread aThread, Throwable aThrowable) {
fLogger.severe(getStackTrace(aThrowable));
JOptionPane.showMessageDialog(
UiUtil.getActiveFrame(), "Error: " + aThrowable.toString(),
"Error", JOptionPane.ERROR_MESSAGE
);
}
private static final Logger fLogger = Util.getLogger(ExceptionHandler.class);
private String getStackTrace(Throwable aThrowable) {
final Writer result = new StringWriter();
final PrintWriter printWriter = new PrintWriter(result);
aThrowable.printStackTrace(printWriter);
return result.toString();
}
}