toString method
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() {
// section 1: message and status
final sb = StringBuffer('GenkitException: $message');
if (status != StatusCodes.UNKNOWN) {
sb.write(' (Status: ${status.name}, Code: ${status.value})');
}
// section 2: details
if (details != null && details!.isNotEmpty) {
sb.write('\n\nDetails: $details');
}
// section 3: underlying exception
if (underlyingException != null) {
sb.write('\n\n');
sb.write(
'''INNER EXCEPTION:
$underlyingException'''
.indent(),
);
}
// section 4: stack trace
if (stackTrace != null) {
sb.write('\n\n');
sb.write(
'''INNER STACK TRACE:
${Trace.from(stackTrace!).terse}'''
.indent(),
);
}
return sb.toString();
}