title: JavaScript Exception Handling
body: <p>What is the best technique for catching ALL exceptions thrown within JavaScript?</p>
  
  <p>Obviously, the best technique is to use try...catch.  But with ansynchronous callbacks and so forth, that can get tricky.</p>
  
  <p>I know IE and Gecko browsers support window.onerror, but what about Opera and Safari?</p>
  
  <p>Here are a bunch of test-cases that I would like to have a central exception handling solution for:</p>
  
  <pre><code>// ErrorHandler-Test1
  var test = null;
  test.arg = 5;
  // ErrorHandler-Test2
  throw (new Error("Hello"));
  // ErrorHandler-Test3
  throw "Hello again";
  // ErrorHandler-Test4
  throw {
      myMessage: "stuff",
      customProperty: 5,
      anArray: [1, 2, 3]
  };
  // ErrorHandler-Test5
  try {
      var test2 = null;
      test2.arg = 5;
  } catch(e) {
      ErrorHandler.handleError(e);
  }
  // ErrorHandler-Test6
  try {
      throw (new Error("Goodbye"));
  } catch(e) {
      ErrorHandler.handleError(e);
  }
  // ErrorHandler-Test7
  try {
      throw "Goodbye again";
  } catch(e) {
      ErrorHandler.handleError(e);
  }
  // ErrorHandler-Test8
  try {
      throw {
          myMessage: "stuff",
          customProperty: 5,
          anArray: [1, 2, 3]
      };
  } catch(e) {
      ErrorHandler.handleError(e);
  }
  </code></pre>
  
  <p>If you think of any other test-cases, please mention them.  Several of these cases mention a ErrorHandler.handleError method.  This is just a suggested guideline when using try...catch.</p>