try {
//statements that may cause an error
}
catch (err) { //err holds info about the error
//statements that handle an error, if one happens
throw err //if you decide to error after all
}
finally { //optional
//statements that happen error or not
}
There are 3 types of errors:
#1 is corrected by the programmer learning and fixing the code. #2 can be fixed by adding more code to better check the data, but it starts to get annoying... #3 can't be fixed... except by a try-catch block. And, they really manes dealing with bad data easy. Just don't deal with it, and reject anything that causes a crash.
The catch block can example the error object and take action based on the type of the error. e.g.
try {
something();
} catch (e) {
if (e instanceof RangeError) {
// statements to handle this very common expected error
console.log("out of range"+e)
throw "value out of range"
} else {
throw e; // re-throw the error unchanged
}
}
The error object also has two attributes: .name which is the general class of error, and .message which is a short error message.
Error classes include:
The throw keyword accepts any expression, or can be used with new to make a new error object of any error class or a generic error. E.g.
throw "bogus" //directly using a string or other value
throw my_error_messages(32) //function can return a value for the error
throw new Error("bogus") //generic error with message
throw new TypeError("value must be a widget") //error of type TypeError
See also: