/**
 * An Exception is a runtime exception that is meant to caught and handled.
 * On the other hand, an Error is unrecoverable and are not meant to be
 * caught.
 *
 * @example
 * ```ts
 * export class IndexOutOfRangeException extends Exception {
 *   constructor(index: number) {
 *     super(`Index ${index} is out of range`);
 *   }
 * }
 * ```
 *
 * @remarks Extending this class will automatically override the `name`
 * property to the class name, resulting in a more descriptive error message.
 */
export declare class Exception extends Error {
    name: string;
}