# NestedRuntimeException class abstract

Abstract base class for runtime exceptions that can wrap other exceptions.

This class provides a foundation for creating exception hierarchies where exceptions can contain references to their underlying causes. It's particularly useful for framework-level exceptions that need to preserve the original error context while adding additional information.

### Key Features:

- Maintains a chain of causation through nested exceptions
- Provides root cause analysis capabilities
- Supports exception type checking throughout the chain
- Offers formatted string representation with cause information

### Example:

    class DatabaseException extends NestedRuntimeException {
      DatabaseException(String message, [Throwable? cause]) : super(message, cause);
    }

    // Usage with nested causes
    try {
      // Some database operation
    } catch (e) {
      throw DatabaseException('Failed to save user', e);
    }

    // Analyzing the exception chain
    catch (e) {
      if (e is NestedRuntimeException) {
        print('Root cause: ${e.getRootCause()}');
        print('Most specific: ${e.getMostSpecificCause()}');
      }
    }

Inheritance
  - Object
  - Error
  - Throwable
  - NestedRuntimeException
Available extensions
  - ErrorExtensions
  - ExceptionExtensions
  - ThrowableExtensions

## Constructors

NestedRuntimeException.new([String? message, Throwable? cause])
  Abstract base class for runtime exceptions that can wrap other exceptions.

## Properties

cause → Throwable?
  The underlying cause of this exception, if any.
  final
hashCode → int
  The hash code for this object.
  no setter inherited
message → String?
  The descriptive message for this exception.
  final
runtimeType → Type
  A representation of the runtime type of the object.
  no setter inherited
stackTrace → StackTrace?
  The stack trace at the point where this error was first thrown.
  no setter inherited

## Methods

contains(Class? exType) → bool
  Checks if this exception or any exception in its cause chain is of the specified type.
getCause() → Throwable?
  The cause of this exception, if any.
  override
getMessage() → String
  The message associated with this exception.
  override
getMostSpecificCause() → Throwable
  Returns the most specific cause of this exception.
getRootCause() → Throwable?
  Returns the root cause of this exception by traversing the cause chain.
getStackTrace() → StackTrace
  The stack trace associated with this exception.
  inherited
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
printStackTrace([bool useErrorPrint = false]) → void

  Available on Error, provided by the ErrorExtensions extension

  Prints the error along with its stack trace.
printStackTrace([StackTrace? stacktrace, bool useErrorPrint = false]) → void

  Available on Exception, provided by the ExceptionExtensions extension

  Prints the exception and optional StackTrace if available.
printStackTrace([bool useErrorPrint = false]) → void

  Available on Throwable, provided by the ThrowableExtensions extension

  Extension on Throwable to support printing stack traces in a unified way.
toString() → String
  A string representation of this object.
  override

## Operators

operator ==(Object other) → bool
  The equality operator.
  inherited