Currently you can only declare error handler for Werkzeug exceptions. That's pretty much the case because what is not raised as a Werkzeug HTTP exception can't be catched. However since Python 2.4 is currently in the process of being phased out we could now finally make exceptions actual response objects if we prefer so it would make sense to keep that in mind and provide catching not only by code but also by any kind of instance check.
This also affects Werkzeug.
Related feedback issues:
Perhaps I don't understand this issue, but maybe it should be closed. It seems like current flask versions allow error handlers for any kind of exception. By this I mean the following program runs without an error, there are all sorts of combinations and permutations which it doesn't test.
app = flask.Flask(__name__)
print "Trapped a python Exception!"
return "app trapped", 200
def slash_view() :
c = app.test_client()
resp = c.get('/')
assert resp.data == "app trapped"
assert resp.status_code == 200