001package com.github.sarxos.webcam; 002 003import java.lang.Thread.UncaughtExceptionHandler; 004 005import org.slf4j.Logger; 006import org.slf4j.LoggerFactory; 007import org.slf4j.helpers.NOPLoggerFactory; 008 009 010/** 011 * Used internally. 012 * 013 * @author Bartosz Firyn (sarxos) 014 */ 015public class WebcamExceptionHandler implements UncaughtExceptionHandler { 016 017 private static final Logger LOG = LoggerFactory.getLogger(WebcamExceptionHandler.class); 018 019 private static final WebcamExceptionHandler INSTANCE = new WebcamExceptionHandler(); 020 021 private WebcamExceptionHandler() { 022 // singleton 023 } 024 025 @Override 026 public void uncaughtException(Thread t, Throwable e) { 027 Object context = LoggerFactory.getILoggerFactory(); 028 if (context instanceof NOPLoggerFactory) { 029 System.err.println(String.format("Exception in thread %s", t.getName())); 030 e.printStackTrace(); 031 } else { 032 LOG.error(String.format("Exception in thread %s", t.getName()), e); 033 } 034 } 035 036 public static void handle(Throwable e) { 037 INSTANCE.uncaughtException(Thread.currentThread(), e); 038 } 039 040 public static final WebcamExceptionHandler getInstance() { 041 return INSTANCE; 042 } 043}