code: @Override
      public void uncaughtException(@Nullable Thread t, @NonNull Throwable e) {
  
          // If we're not enabled then just pass the Exception on to the defaultExceptionHandler.
          if (!reportExecutor.isEnabled()) {
              reportExecutor.handReportToDefaultExceptionHandler(t, e);
              return;
          }
  
          try {
              ACRA.log.e(LOG_TAG, "ACRA caught a " + e.getClass().getSimpleName() + " for " + context.getPackageName(), e);
              if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "Building report");
  
              // Generate and send crash report
              new ReportBuilder()
                      .uncaughtExceptionThread(t)
                      .exception(e)
                      .customData(customData)
                      .endApplication()
                      .build(reportExecutor);
  
          } catch (Exception fatality) {
              // ACRA failed. Prevent any recursive call to ACRA.uncaughtException(), let the native reporter do its job.
              ACRA.log.e(LOG_TAG, "ACRA failed to capture the error - handing off to native error reporter", fatality);
              reportExecutor.handReportToDefaultExceptionHandler(t, e);
          }
      }
docs: /*
  (non-Javadoc)
  
  @see
  java.lang.Thread.UncaughtExceptionHandler#uncaughtException(java.lang
  .Thread, java.lang.Throwable)