I agree with Reed: this is the best approach.
I would add these comments:
Only catch something you're going to do something about. If you can't fix the problem, there's no point in catching a specific exception.
Don't overdo use of catch blocks. In many cases where you can't resolve the exception, it's best to just let the exception bubble up to a central point (such as Page_Error) and catch it there. Then, you log the exception and display a message to the user.