captureException method
Future<SentryId>
captureException(
- dynamic throwable, {
- dynamic stackTrace,
- Hint? hint,
- ScopeCallback? withScope,
Captures the exception
Implementation
Future<SentryId> captureException(
dynamic throwable, {
dynamic stackTrace,
Hint? hint,
ScopeCallback? withScope,
}) async {
var sentryId = SentryId.empty();
if (!_isEnabled) {
_options.logger(
SentryLevel.warning,
"Instance is disabled and this 'captureException' call is a no-op.",
);
} else if (throwable == null) {
_options.logger(
SentryLevel.warning,
'captureException called with null parameter.',
);
} else {
final item = _peek();
late Scope scope;
final s = _cloneAndRunWithScope(item.scope, withScope);
if (s is Future<Scope>) {
scope = await s;
} else {
scope = s;
}
try {
var event = SentryEvent(
throwable: throwable,
timestamp: _options.clock(),
);
if (_options.isTracingEnabled()) {
event = _assignTraceContext(event);
}
sentryId = await item.client.captureEvent(
event,
stackTrace: stackTrace,
scope: scope,
hint: hint,
);
} catch (exception, stackTrace) {
_options.logger(
SentryLevel.error,
'Error while capturing exception',
exception: exception,
stackTrace: stackTrace,
);
if (_options.automatedTestMode) {
rethrow;
}
} finally {
_lastEventId = sentryId;
}
}
return sentryId;
}