HTML and CSS Reference
In-Depth Information
Because the
WorkWithCanvas
method has no exception handling, the exception bubbles
up to the calling method, the next method in the stack. This continues through the stack until
either an exception handler is met or the browser receives the exception and treats it as an
unhandled exception. Of course, in this case, the variables in the
WorkWithCanvas
method
can't be accessed, so if anything needed to be done in a
finally
block, the
try…catch…finally
block should be either moved into the
WorkWithCanvas
method, or the
WorkWithCanvas
method can handle the error and rethrow it for further processing.
The concept of raising an error is also known as
throwing an exception
. Custom objects and
libraries throw exceptions as needed to the consumers of the libraries. The objects or libraries
expect you to meet certain conditions and if those conditions aren't met, they can throw
an exception for the consumer to deal with. To continue with the example, the exception is
handled in the
WorkWithCanvas
method and then rethrown. An exception is thrown using
the throw keyword:
function WorkWithCanvas() {
try {
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
contxt.arc(50, 50, 25, 0, 360);
context.fillStyle = "blue";
context.fill();
context.strokeStyle = "red";
context.stroke();
} catch (e) {
//handle the exception as appropriate
throw e;
} finally {
}
}
In this example, the exception can be handled in the
catch
block as needed, and then
thrown back up the call stack to be handled again at another level.
More commonly when working with custom libraries, you can create custom exceptions to
give users information specific to the situation that occurred:
var ball = {
x: -1,
y: -1,
draw: function DrawBall(c) {
if (this.x < 0)
throw new Error(25, "Invalid X coordinate");
}
}
window.onload = function () {
try {
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
ball.draw(context);
} catch (e) {
alert(e.message);
}
}
Search WWH ::
Custom Search