/* * ExceptionHandler.java * * Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard * * This file is part of BEAST. * See the NOTICE file distributed with this work for additional * information regarding copyright ownership and licensing. * * BEAST is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * BEAST is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with BEAST; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301 USA */ package dr.app.bss; import java.lang.Thread.UncaughtExceptionHandler; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; /** * @author Filip Bielejec * @version $Id$ */ public class ExceptionHandler implements UncaughtExceptionHandler { public void uncaughtException(final Thread t, final Throwable e) { if (SwingUtilities.isEventDispatchThread()) { showExceptionDialog(t, e); } else { SwingUtilities.invokeLater(new Runnable() { public void run() { showExceptionDialog(t, e); } }); }// END: EDT check }// END: uncaughtException private void showExceptionDialog(Thread t, Throwable e) { String msg = String.format("Unexpected problem on thread %s: %s", t.getName(), e.getMessage()); logException(t, e); JOptionPane.showMessageDialog(Utils.getActiveFrame(), // msg, // "Error", // JOptionPane.ERROR_MESSAGE, // Utils.createImageIcon(Utils.ERROR_ICON)); }// END: showExceptionDialog private void logException(Thread t, Throwable e) { // start a thread that logs it, also spying on the user and planting evidence e.printStackTrace(); }//END: logException }// END: class