Class LoggableException

All Implemented Interfaces:
LoggableKeysAndValues<LoggableException>, Serializable
Direct Known Subclasses:
BunchedMapException, MoreAsyncUtil.DeadlineExceededException, SynchronizedSessionLockedException

@API(UNSTABLE) public class LoggableException extends RuntimeException implements LoggableKeysAndValues<LoggableException>
Exception type with support for adding keys and values to its log info. This can then be logged in a way that better supports searching later.
See Also:
  • Constructor Details

    • LoggableException

      public LoggableException(@Nonnull String msg, @Nullable Object... keyValues)
      Create an exception with the given message a the sequence of key-value pairs. This will throw an IllegalArgumentException if keyValues contains an odd number of elements.
      Parameters:
      msg - error message
      keyValues - list
      See Also:
    • LoggableException

      public LoggableException(Throwable cause)
    • LoggableException

      public LoggableException(@Nonnull String msg, @Nullable Throwable cause)
    • LoggableException

      public LoggableException(@Nonnull String msg)
    • LoggableException

      protected LoggableException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
  • Method Details

    • getLogInfo

      @Nonnull public Map<String,Object> getLogInfo()
      Get the log information associated with this exception as a map.
      Specified by:
      getLogInfo in interface LoggableKeysAndValues<LoggableException>
      Returns:
      a single map with all log information
    • addLogInfo

      @Nonnull public LoggableException addLogInfo(@Nonnull String description, Object object)
      Add a key/value pair to the log information. This will use the description given as the key and the object provided as the value.
      Specified by:
      addLogInfo in interface LoggableKeysAndValues<LoggableException>
      Parameters:
      description - description of the log info pair
      object - value of the log info pair
      Returns:
      this LoggableException
    • addLogInfo

      @Nonnull public LoggableException addLogInfo(@Nonnull Object... keyValue)
      Add a list of key/value pairs to the log information. This will treat the list of items as pairs to be added with every even element being a key and every odd element being a value (associated with the even key preceding it). So, for example, ["k0", "v0", "k1", "v1"] will add two pairs to the log info, one with key "k0" and value "v0" and one with key "k1" and value "v1". Note that this is the same format that is exported by exportLogInfo().
      Specified by:
      addLogInfo in interface LoggableKeysAndValues<LoggableException>
      Parameters:
      keyValue - flattened map of key-value pairs
      Returns:
      this LoggableException
      Throws:
      IllegalArgumentException - if keyValue has odd length
    • exportLogInfo

      @Nonnull public Object[] exportLogInfo()
      Export the log information to a flattened array. This will flatten the map that would be returned by getLogInfo() into an array where every even element is a key within the map and every odd element is the value associated with the key before it. So, for example, {"k0:"v0", "k1":"v1"} would be flattened into ["k0", "v0", "k1", "v1"]. Note that this is the same format that is accepted by addLogInfo(Object...) and by LoggableException(String, Object...).
      Specified by:
      exportLogInfo in interface LoggableKeysAndValues<LoggableException>
      Returns:
      a flattened map of key-value pairs