From 326295f592e95cdfa61609105e25d5706e0ebf19 Mon Sep 17 00:00:00 2001 From: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:05:02 -0700 Subject: [PATCH] fix: Conditionally access constructor name. (#561) --- .../src/BrowserTelemetryImpl.ts | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/telemetry/browser-telemetry/src/BrowserTelemetryImpl.ts b/packages/telemetry/browser-telemetry/src/BrowserTelemetryImpl.ts index d1b2d2b94..2f6a2f631 100644 --- a/packages/telemetry/browser-telemetry/src/BrowserTelemetryImpl.ts +++ b/packages/telemetry/browser-telemetry/src/BrowserTelemetryImpl.ts @@ -134,13 +134,23 @@ export default class BrowserTelemetryImpl implements BrowserTelemetry { } captureError(exception: Error): void { - const data: ErrorData = { - type: exception.name || exception.constructor.name || 'generic', - message: exception.message, - stack: parse(exception, this.options.stack), - breadcrumbs: [...this.breadcrumbs], - sessionId: this.sessionId, - }; + const validException = exception !== undefined && exception !== null; + + const data: ErrorData = validException + ? { + type: exception.name || exception.constructor?.name || 'generic', + message: exception.message, + stack: parse(exception, this.options.stack), + breadcrumbs: [...this.breadcrumbs], + sessionId: this.sessionId, + } + : { + type: 'generic', + message: 'null or undefined exception', + stack: { frames: [] }, + breadcrumbs: [...this.breadcrumbs], + sessionId: this.sessionId, + }; this.capture(ERROR_KEY, data); this.dispatchError(exception); }