content: // Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
  //  This source code is licensed under both the GPLv2 (found in the
  //  COPYING file in the root directory) and Apache 2.0 License
  //  (found in the LICENSE.Apache file in the root directory).
  
  package org.rocksdb;
  
  /**
   * A RocksDBException encapsulates the error of an operation.  This exception
   * type is used to describe an internal error from the c++ rocksdb library.
   */
  public class RocksDBException extends Exception {
  
    /* @Nullable */ private final Status status;
  
    /**
     * The private construct used by a set of public static factory method.
     *
     * @param msg the specified error message.
     */
    public RocksDBException(final String msg) {
      this(msg, null);
    }
  
    public RocksDBException(final String msg, final Status status) {
      super(msg);
      this.status = status;
    }
  
    public RocksDBException(final Status status) {
      super(status.getState() != null ? status.getState()
          : status.getCodeString());
      this.status = status;
    }
  
    /**
     * Get the status returned from RocksDB
     *
     * @return The status reported by RocksDB, or null if no status is available
     */
    public Status getStatus() {
      return status;
    }
  }
  