toString method

  1. @override
String toString()
override

A string representation of this object.

Some classes have a default textual representation, often paired with a static parse function (like int.parse). These classes will provide the textual representation as their string representation.

Other classes have no meaningful textual representation that a program will care about. Such classes will typically override toString to provide useful information when inspecting the object, mainly for debugging or logging.

Implementation

@override
String toString() {
  final StringBuffer messageBuffer = StringBuffer();
  final StringBuffer stackTraceBuffer = StringBuffer();

  messageBuffer.write(this.runtimeType);
  messageBuffer.write(": ");
  messageBuffer.write(message);

  FException? innerException = this.innerException;
  while (innerException != null) {
    messageBuffer.write(" ---> ");

    messageBuffer.write(innerException.runtimeType);
    messageBuffer.write(": ");
    messageBuffer.write(innerException.message);

    final StackTrace? innerStackTrace = innerException.stackTrace;
    if (innerStackTrace != null) {
      stackTraceBuffer.write(innerStackTrace.toString());
    } else {
      stackTraceBuffer.writeln("No available stack trace");
    }
    stackTraceBuffer.writeln("--- End of inner exception stack trace ---");

    innerException = innerException.innerException;
  }

  final StackTrace? stackTrace = this.stackTrace;
  if (stackTrace != null) {
    stackTraceBuffer.write(stackTrace.toString());
  } else {
    stackTraceBuffer.write("No available stack trace");
  }

  messageBuffer.writeln();
  messageBuffer.write(stackTraceBuffer.toString());

  return messageBuffer.toString();
}