I've got an object with functions that throw errors,
myObj = {
ini:function(){
this.f();
},
f:function(){
throw new Error();
}
};
but I only want to catch the exceptions where the object is created
try{
var o = new myObj();
}catch(err){
alert("error!");
}
it looks like i have to have try/catch blocks everywhere =/ to capture the error event in different function scopes
try{
myObj = {
ini:function(){
try{
this.f();
}catch(err){
alert("f threw an err");
}
},
f:function(){
throw new Error();
}
};
}catch(err){
alert("error happend while crating Obj");
}
But I only want to capture from one place =/ How do I do this?
Have your function throw a specific type of object, and then in your catch block check to see if (err instanceof MyExceptionObj)
and handle appropriately, otherwise re-throw it.
By re-throw I mean:
If the caught exception object isn't one you can handle, you should re-throw it to give any catch blocks further up a chance to handle it. If none do, the browser will catch it and display a JS error.
try { if ($.browser.msie) { throw new UnsupportedBrowserException(); } } catch (ex) { if (ex instanceof UnsupportedBrowserException) { alert('Your browser isn't supported.'); } else { // We don't know how to handle this exception, throw it back. throw ex; } }
You probably wouldn't do this in the real world.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With