/** * Copyright (c) 2012 Todoroo Inc * * See the file "LICENSE" for the full license governing this code. */ package com.localytics.android; import android.util.Log; /** * Exception handler for background threads used by the Localytics library. * <p> * Analytics are secondary to any other functions performed by an app, which means that analytics should never cause an app to * crash. This handler therefore suppresses all uncaught exceptions from the Localytics library. */ /* package */final class ExceptionHandler implements Thread.UncaughtExceptionHandler { public void uncaughtException(final Thread thread, final Throwable throwable) { /* * Wrap all the work done by the exception handler in a try-catch. It would be ironic if this exception handler itself * caused the parent process to crash. */ try { if (Constants.IS_LOGGABLE) { Log.e(Constants.LOG_TAG, "Localytics library threw an uncaught exception", throwable); //$NON-NLS-1$ } // TODO: Upload uncaught exceptions so that we can fix them } catch (final Exception e) { if (Constants.IS_LOGGABLE) { Log.e(Constants.LOG_TAG, "Exception handler threw an exception", e); //$NON-NLS-1$ } } } }