Home | History | Annotate | Download | only in utils
      1 package android.hardware.camera2.utils;
      2 
      3 import android.hardware.camera2.CameraAccessException;
      4 
      5 /**
      6  * @hide
      7  */
      8 public class CameraRuntimeException extends RuntimeException {
      9 
     10     private final int mReason;
     11     private String mMessage;
     12     private Throwable mCause;
     13 
     14     public final int getReason() {
     15         return mReason;
     16     }
     17 
     18     public CameraRuntimeException(int problem) {
     19         super();
     20         mReason = problem;
     21     }
     22 
     23     public CameraRuntimeException(int problem, String message) {
     24         super(message);
     25         mReason = problem;
     26         mMessage = message;
     27     }
     28 
     29     public CameraRuntimeException(int problem, String message, Throwable cause) {
     30         super(message, cause);
     31         mReason = problem;
     32         mMessage = message;
     33         mCause = cause;
     34     }
     35 
     36     public CameraRuntimeException(int problem, Throwable cause) {
     37         super(cause);
     38         mReason = problem;
     39         mCause = cause;
     40     }
     41 
     42     /**
     43      * Recreate this exception as the CameraAccessException equivalent.
     44      * @return CameraAccessException
     45      */
     46     public CameraAccessException asChecked() {
     47         CameraAccessException e;
     48 
     49         if (mMessage != null && mCause != null) {
     50             e = new CameraAccessException(mReason, mMessage, mCause);
     51         } else if (mMessage != null) {
     52             e = new CameraAccessException(mReason, mMessage);
     53         } else if (mCause != null) {
     54             e = new CameraAccessException(mReason, mCause);
     55         } else {
     56             e = new CameraAccessException(mReason);
     57         }
     58         // throw and catch, so java has a chance to fill out the stack trace
     59         e.setStackTrace(this.getStackTrace());
     60 
     61         return e;
     62     }
     63 }
     64