/*
* Overchan Android (Meta Imageboard Client)
* Copyright (C) 2014-2016 miku-nyan <https://github.com/miku-nyan>
*
* 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 nya.miku.wishmaster.ui.gallery;
public class GalleryExceptionHandler {
public static void init() {
Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
if (defaultHandler instanceof ExceptionHandler) return;
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(defaultHandler));
}
private static class ExceptionHandler implements Thread.UncaughtExceptionHandler {
private final Thread.UncaughtExceptionHandler defaultHandler;
ExceptionHandler(Thread.UncaughtExceptionHandler defaultHandler) {
this.defaultHandler = defaultHandler;
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
if (ex instanceof NullPointerException) {
StackTraceElement top = ex.getStackTrace()[0];
if ("android.view.SurfaceView".equals(top.getClassName()) && "updateWindow".equals(top.getMethodName())) {
System.err.println("CAUGHT EXCEPTION");
ex.printStackTrace(System.err);
System.exit(0);
return;
}
}
defaultHandler.uncaughtException(thread, ex);
}
}
}