@snipsonian/core
Version:
Core/base reusable javascript code snippets
27 lines (25 loc) • 799 B
text/typescript
export interface IConditionalCatchInput {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
actionToExecute: () => any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
onError?: (error: any) => any;
shouldCatchErrors?: boolean;
}
// eslint-disable-next-line consistent-return
export default function conditionalCatch({
actionToExecute,
onError,
shouldCatchErrors = false,
}: IConditionalCatchInput): any { // eslint-disable-line @typescript-eslint/no-explicit-any
if (shouldCatchErrors) {
try {
return actionToExecute();
} catch (error) {
if (typeof onError === 'function') {
return onError(error);
}
}
} else {
return actionToExecute();
}
}