Skip to content

Commit

Permalink
feat: better error handling helper
Browse files Browse the repository at this point in the history
  • Loading branch information
kimploo committed Jan 1, 2024
1 parent b7d4a8c commit 3298090
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/util/errorHandler.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// REF: https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript

type ErrorWithMessage = {
message: string;
};

function isErrorWithMessage(error: unknown): error is ErrorWithMessage {
return (
typeof error === 'object' &&
error !== null &&
'message' in error &&
typeof (error as Record<string, unknown>).message === 'string'
);
}

function toErrorWithMessage(maybeError: unknown): ErrorWithMessage {
if (isErrorWithMessage(maybeError)) return maybeError;

try {
return new Error(JSON.stringify(maybeError));
} catch {
// fallback in case there's an error stringifying the maybeError
// like with circular references for example.
return new Error(String(maybeError));
}
}

export function getErrorMessage(error: unknown) {
return toErrorWithMessage(error).message;
}

0 comments on commit 3298090

Please sign in to comment.