@hitorisensei/errors.wrap
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

errors.wrap

This is a simple library for wrapping errors with additional context messages for rethrowing without losing the original error stack trace and message.

Example

Without wrapping

Code

function connectDatabase() {
    throw new Error('Database connection failed');
}

function startApp() {
    try {
        connectDatabase();
    } catch (err) {
        throw err;
    }
}


try {
    startApp();
} catch (err) {
    console.error(err);
}

Output

Error: Database connection failed
    at connectDatabase (test-nowrap.js:3:9)
    at startApp (test-nowrap.js:8:5)
    at Object.<anonymous> (test-nowrap.js:16:3)
    at Module._compile (node:internal/modules/cjs/loader:1112:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:834:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47

With wrapping

const { wrap } = require('@hitorisensei/errors.wrap');

function connectDatabase() {
  throw new Error('Database connection failed');
}

function startApp() {
  try {
    connectDatabase();
  } catch (err) {
    throw wrap(err, 'Cannot start app');
  }
}

try {
  startApp();
} catch (err) {
  console.error(err);
}

Output

Error: Cannot start app: Database connection failed
    at startApp (/Users/hitori/Projekty/wrap/test-wrap.js:11:11)
    at Object.<anonymous> (/Users/hitori/Projekty/wrap/test-wrap.js:16:3)
    at Module._compile (node:internal/modules/cjs/loader:1112:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:834:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47
Error: Database connection failed
    at connectDatabase (/Users/hitori/Projekty/wrap/test-wrap.js:4:9)
    at startApp (/Users/hitori/Projekty/wrap/test-wrap.js:9:5)
    at Object.<anonymous> (/Users/hitori/Projekty/wrap/test-wrap.js:16:3)
    at Module._compile (node:internal/modules/cjs/loader:1112:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:834:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47

Issues

  • Wrapped error stack trace is modified to include additional wrap hops, so it may break some tools that rely on stack trace format.

Readme

Keywords

none

Package Sidebar

Install

npm i @hitorisensei/errors.wrap

Weekly Downloads

1

Version

1.0.1

License

none

Unpacked Size

9.86 kB

Total Files

7

Last publish

Collaborators

  • hitorisensei