From: Hendrik B. <nh...@us...> - 2010-03-04 21:35:40
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/client In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv12903/src/games/stendhal/client Modified Files: Tag: VERSION_00_RELEASE_81_REVISION_02 stendhal.java Added Files: Tag: VERSION_00_RELEASE_81_REVISION_02 LogUncaughtExceptionHandler.java Log Message: log uncaught exceptions (fixes #2963720) Index: stendhal.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/stendhal.java,v retrieving revision 1.111 retrieving revision 1.111.6.1 diff -C2 -d -r1.111 -r1.111.6.1 *** stendhal.java 6 Feb 2010 02:11:14 -0000 1.111 --- stendhal.java 4 Mar 2010 21:35:32 -0000 1.111.6.1 *************** *** 111,115 **** + System.getProperty("java.vm.name") + " " + System.getProperty("java.vm.version")); ! } --- 111,115 ---- + System.getProperty("java.vm.name") + " " + System.getProperty("java.vm.version")); ! LogUncaughtExceptionHandler.setup(); } --- NEW FILE: LogUncaughtExceptionHandler.java --- /* $Id: LogUncaughtExceptionHandler.java,v 1.1.2.2 2010/03/04 21:35:32 nhnb Exp $ */ /*************************************************************************** * (C) Copyright 2003-2010 - Marauroa * *************************************************************************** *************************************************************************** * * * 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 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ package games.stendhal.client; import marauroa.common.Log4J; import marauroa.common.Logger; /** * logs uncaught exceptions to the logging system before * the exception is propagated to the Java VM which will * kill the thread. The Java VM only logs to stderr so * there would be no information in the logfile without * this class. */ public class LogUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { private static Logger logger = Log4J.getLogger(LogUncaughtExceptionHandler.class); private Thread.UncaughtExceptionHandler next; public void uncaughtException(Thread thread, Throwable exception) { logger.error("Exception in thread " + thread.getName(), exception); System.err.println("Exception in thread " + thread.getName()); exception.printStackTrace(); if (next != null) { next.uncaughtException(thread, exception); } } /** * installs this uncaught exception handler */ public static void setup() { LogUncaughtExceptionHandler handler = new LogUncaughtExceptionHandler(); handler.next = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(handler); } } |