0.1.0 β’ Published 11 months ago
safe-try-catch v0.1.0
π Safe Try Catch
Safe and structured error handling for JavaScript.
β‘ Features
- π Safe error handling for synchronous and asynchronous functions
- π Supports
try/catch
for both sync and async operations - π― Clear separation between success and failure using
Result<T, E>
- π Compatible with Promises
- π¦ Easy integration with existing codebases
- π‘ Inspired by Rustβs error-handling model
π¦ Install
# Using npm
npm install safe-try-catch
# Using yarn
yarn add safe-try-catch
# Using pnpm
pnpm add safe-try-catch
# Using bun
bun add safe-try-catch
π Usage
Basic Example
Wraps synchronous or asynchronous functions with safe error handling.
import { safeTry } from 'safe-try-catch';
const [result, error] = safeTry(() => {
throw new Error("This is an error");
});
Wrapping a function
Wraps a function to handle errors safely, and can be used with both synchronous and asynchronous functions.
import { wrapTry } from 'safe-try-catch';
// Unsafe synchronous function
function unsafeSyncAction(value: string): string {
if (value === "") throw new Error("Value is empty");
return value.trim();
}
const safeAction = wrapTry(unsafeSyncAction);
const [result, error] = safeAction(" Hello World ");
if (error) {
console.error(error.message);
} else {
console.log(result); // "Hello World"
}
π API
safeTry(fn: () => T): Result<T, Error>
- Description: Directly executes a function or block of code inside error handling. Ideal for quick, inline code execution.
- Parameters:
fn
: A synchronous function to be executed.
- Returns: A tuple
[result, error]
.
wrapTry<T, E>(fn: (...args: any[]) => T | Promise<T>): (...args: any[]) => Promise<Result<T, E>>
- Description: Wraps a given function (synchronous or asynchronous) in safe error handling. Returns a function that handles errors and returns a Promise.
- Parameters:
fn
: A function to be wrapped that returns a value or a Promise.
- Returns: A function that returns a Promise containing a tuple
[result, error]
.
π€ Contributing
Contributions, issues and feature requests are welcome! Feel free to check issues page.
β€οΈ Show your support
Give a βοΈ if this project helped you! Or buy me a coffeelatte π on Ko-fi
π License
0.1.0
11 months ago