# NestedCheckedException class abstract

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

Similar to NestedRuntimeException, this class provides exception chaining capabilities for checked exceptions. It maintains the cause chain and provides utilities for analyzing the exception hierarchy.

### Key Features:

- Exception chaining for checked exceptions
- Root cause analysis and traversal
- Type checking throughout the exception chain
- Consistent string representation with cause information

### Example:

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

    // Usage in validation scenarios
    Future<void> validateUser(User user) async {
      try {
        await validateEmail(user.email);
      } catch (e) {
        throw ValidationException('User validation failed', e);
      }
    }

    // Exception analysis
    try {
      await validateUser(user);
    } catch (e) {
      if (e is NestedCheckedException) {
        final rootCause = e.getRootCause();
        if (e.contains(Class<FormatException>())) {
          print('Validation failed due to format error');
        }
      }
    }

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

## Constructors

NestedCheckedException.new(String? message, [Throwable? cause])
  Abstract base class for checked 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