MultipleException.kt

  1. package com.hexagonkt.core

  2. /**
  3.  * Exception with a list of causes. Cause is `null` as it can't be told which one of the list is the
  4.  * cause.
  5.  *
  6.  * A coded multiple exception should be created this way:
  7.  * ```kotlin
  8.  * CodedException(400, "Many errors", MultipleException())
  9.  * ```
  10.  *
  11.  * To pass a list of causes
  12.  * ```kotlin
  13.  * CodedException (500, "Error", *list)
  14.  * ```
  15.  *
  16.  * @property causes List of causing exceptions.
  17.  * @property message Error message.
  18.  */
  19. class MultipleException(val causes: List<Throwable>, message: String = "") :
  20.     RuntimeException(message, null) {

  21.     constructor(vararg causes: Throwable) : this(causes.toList())
  22.     constructor(message: String, causes: List<Throwable>) : this(causes, message)
  23.     constructor(message: String, vararg causes: Throwable) : this(causes.toList(), message)
  24. }