Mercurial > hg > ccmieditor
view java/src/uk/ac/qmul/eecs/ccmi/utils/CCmIUncaughtExceptionHandler.java @ 8:ea7885bd9bff tip
fixed bug : render solid line as dotted/dashed when moving the stylus from dotted/dashed to solid
author | ccmi-guest |
---|---|
date | Thu, 03 Jul 2014 16:12:20 +0100 |
parents | 9418ab7b7f3f |
children |
line wrap: on
line source
/* CCmI Editor - A Collaborative Cross-Modal Diagram Editing Tool Copyright (C) 2011 Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package uk.ac.qmul.eecs.ccmi.utils; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; import java.lang.Thread.UncaughtExceptionHandler; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; /** * The UncaughtExceptionHandler for the CCmI Editor. It logs the occurred exception stack trace * on a file (errorN.log, where N is an integer number automatically assigned to avoid * collision with other files of the same type) which is created in the same directory where * the program is run. The exception stack trace will be in the format defined by the {@code XMLFormatter} class * of the java.utli.logging package. * * @see java.util.logging.XMLFormatter */ public class CCmIUncaughtExceptionHandler implements UncaughtExceptionHandler { @Override public void uncaughtException(Thread thread, Throwable throwable) { try{ Logger logger = Logger.getLogger("uncaught_exception"); logger.setLevel(Level.SEVERE); FileHandler fileHandler = null; try { fileHandler = new FileHandler("error%u.log",true); } catch (IOException e) { System.err.println(throwable.toString()); System.err.println(); System.err.println("Could not use error log file"); e.printStackTrace(); return; } fileHandler.setLevel(Level.SEVERE); logger.addHandler(fileHandler); StringBuilder builder = new StringBuilder(throwable.toString()); builder.append('\n'); final Writer result = new StringWriter(); final PrintWriter printWriter = new PrintWriter(result); throwable.printStackTrace(printWriter); builder.append(result.toString()); logger.severe(builder.toString()); fileHandler.close(); throwable.printStackTrace(); }catch(Exception exception){ exception.printStackTrace(); System.exit(-1); } } }