1package android.hardware.camera2.utils;
2
3import android.hardware.camera2.CameraAccessException;
4
5/**
6 * @hide
7 */
8public 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