An open API service indexing awesome lists of open source software.

https://github.com/sammwyy/safetry

Safe and structured error handling for JavaScript.
https://github.com/sammwyy/safetry

error error-handling javascript try-catch typescript

Last synced: about 1 year ago
JSON representation

Safe and structured error handling for JavaScript.

Awesome Lists containing this project

README

          

# πŸ”’ 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`
- πŸ›  Compatible with Promises
- πŸ“¦ Easy integration with existing codebases
- πŸ’‘ Inspired by Rust’s error-handling model

## πŸ“¦ Install

```bash
# 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.

```ts
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.

```ts
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`

- **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(fn: (...args: any[]) => T | Promise): (...args: any[]) => Promise>`

- **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](https://github.com/sammwyy/safetry/issues).

## ❀️ Show your support

Give a ⭐️ if this project helped you! Or buy me a coffeelatte πŸ™Œ on [Ko-fi](https://ko-fi.com/sammwy)

## πŸ“ License

Copyright Β© 2024 [Sammwy](https://github.com/sammwyy). This project is [MIT](LICENSE) licensed.