One of the most important things I learned during past few months at MeteorHacks is the difference between errors and bugs and how they should be handled. I also found this awesome article on Joyent website which talks about error handling in node.
Errors can stop your program from working but the program can't fix it (s.a. losing network connection). The program should be prepared to handle these events or you're going to say "It works on my computer" a lot. The program must at the least let the user know that an error has occurred and how to fix it if they can. Also in most cases it'll be great if we can keep at least some parts of the application running.
Bugs are mistakes made by the programmer (or Loki who likes messing our code when we're not watching). The program should never expect or try to handle bugs automatically. When developing, it's usually best to let the program crash so you can identify and fix the bug as early as possible. Here are some examples for a few different kinds of bugs.
// syntax console, log("hello world"); // typos konsole.log("hello world"); // logical var square = number * 2;
This might sound pretty dumb but I found this really important. I learned this the hard way and I'm always going to keep this in mind when I code.