node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »



An integrated error system for dealing with errors, written for and with IcedCoffeeScript. I found myself doing this stuff everytime I wrote a new project, so better to standardize it.

Enumerated Error Types

In your lib/error.iced file:

{make_errors} = require 'iced-error'
exports.E = make_errors
  NOT_FOUND : "Requested resource was not found"
  BAD_MAC : "MAC failed on header"
  INVAL : "Invalid value"
  DB_INSERT : "Error inserting into the database"  

In your foo.iced file:

{E} = require './lib/error'
console.log E.OK                # prints 0 
console.log E.NOT_FOUND         # prints 100 
console.log E.msg[E.NOT_FOUND]  # prints "Requested resource was not found" 
console.log E.msg.NOT_FOUND]    # prints "Requested resource was not found" 
console.log    # prints "NOT_FOUND" 
console.log[E.NOT_FOUND# prints "NOT_FOUND" 

You can also use predefined Error classes:

{E} = require './lib/error'
# You can throw these errors too 
throw new E.NotFoundError("your file") 
# Will print [NotFoundError: your file (code 100)] 
console.log new E.NotFoundError "your file"
# Will print "your file" 
console.log (new E.NotFoundError "your file").message
# Will print 100 
console.log (new E.NotFoundError "your file").code

Error Short Circuiters

Catch errors all at once, not everywhere!

{make_esc} = require 'iced-error'
my_fn = (cb) ->
  esc = make_esc gcb"my_fn"
  await socket.get 'image id'esc defer id
  await Image.findById idesc defer image
  await check_permissions userimageesc defer permitted
  gcb nullimage