The supertype of all unexpected transient failures. An `Exception` is usually unrecoverable from the point of view of the immediate caller of an operation.

For example, code that interacts with a relational database isn't typically written to recover from transaction rollback or loss of network connectivity. However, these conditions aren't completely unrecoverable from the point of view of the program's generic exception handling infrastructure. Therefore, they are best treated as `Exception`s.

A subclass of `Exception` represents a more specific kind of problem, and may define additional attributes which propagate information about problems of that kind.

By: Gavin, Tom

- `Anything`
  - `Object`
    - `Basic` ...and other supertypes
      - `Throwable`
        - `Exception`

- `Exception`
  - `Throwable`
    - `Basic`
      - `Identifiable`
      - `Object`
        - `Anything`

- `Exception`
  - `IncompatibleTypeException`
  - `InvocationException`
  - `MutationException`
  - `OverflowException`
  - `TypeApplicationException`

Initializer
`Exception(String? description = null, Throwable? cause = null)` Parameters: `description = null` A description of the problem. `cause = null` The underlying cause of this exception.

Inherited Attributes
Attributes inherited from: `Object` `Object.hash`, `Object.string`
Attributes inherited from: `Throwable` `Throwable.message`, `Throwable.string`, `Throwable.suppressed`

Inherited Methods
Methods inherited from: `Object` `Object.equals()`
Methods inherited from: `Throwable` `Throwable.addSuppressed()`, `Throwable.printStackTrace()`