Skip to content
A utility library to create and manage checked exceptions in typescript
TypeScript
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test-types
test
.gitignore
.npmignore
.prettierrc
.travis.yml
.yo-rc.json
README.md
index.ts
package.json
tsconfig.json
tslint.json
typedoc.json
yarn.lock

README.md

checked-exceptions

Build Status npm

A utility library to create and manage checked exceptions in typescript.

Index

Installation

npm:

npm i checked-exceptions --save

yarn:

yarn add checked-exceptions

Usage

Create

A checked exception can be created by just importing check function for the library and passing it the type of the exception.

import {check} from 'checked-exceptions'

const NotImplemented = check('NotImplemented')

throw new NotImplemented()

Instantiate

Once a checked exception class has been created, an instance of the checked exception can be created using the new operator or using the static of() function, for eg:

Using the new operator

const err = new NotImplemented()

Using the of function

const err = NotImplemented.of()

Customize

A custom exception with additional meta data can be created by passing a second argument for eg:

type User = {id: number; name: string}

const UserIdNotFound = check(
  'UserIdNotFound',
  (user: User) => `Could not find user with id: ${user.id}`
)

throw new UserIdNotFound({id: 1900, name: 'Foo'})

The second argument is of type function and is used to generate the message string when the exception is thrown.

Access Data

The default properties of an exception such as stack and message work like they do in a typical Error object. Additional properties such as data , type is also added, for eg:

type User = {id: number; name: string}

const UserIdNotFound = check(
  'UserIdNotFound',
  (user: User) => `Could not find user with id: ${user.id}`
)

const err = new UserIdNotFound({id: 1900, name: 'Foo'})

console.log(err.data.id) // prints 1900
console.log(err.type) // prints 'UserIdNotFound'

Access Type

To access the type of the exception you can use the info property on the created checked exception —

type User = {id: number; name: string}

const UserIdNotFound = check(
  'UserIdNotFound',
  (user: User) => `Could not find user with id: ${user.id}`
)

type UserIdNodeFoundException = typeof UserIdNotFound.info

const err: UserIdNodeFoundException = new UserIdNotFound({
  id: 1900,
  name: 'Foo'
})
You can’t perform that action at this time.