<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>demos/blog/templates/error.html</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -24,6 +24,7 @@ import tornado.ioloop
 import tornado.options
 import tornado.web
 import unicodedata
+import httplib
 
 from tornado.options import define, options
 
@@ -54,6 +55,7 @@ class Application(tornado.web.Application):
             cookie_secret=&quot;11oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=&quot;,
             login_url=&quot;/auth/login&quot;,
         )
+        self.error_handler = CustomErrorHandler
         tornado.web.Application.__init__(self, handlers, **settings)
 
         # Have one global connection to the blog DB across all handlers
@@ -72,6 +74,19 @@ class BaseHandler(tornado.web.RequestHandler):
         if not user_id: return None
         return self.db.get(&quot;SELECT * FROM authors WHERE id = %s&quot;, int(user_id))
 
+    def get_error_html(self, status_code):
+        &quot;&quot;&quot;custom error page&quot;&quot;&quot;
+        self.render(&quot;error.html&quot;,code=status_code,message=httplib.responses[status_code])
+    
+
+class CustomErrorHandler(BaseHandler):
+    def __init__(self,application,request,status_code):
+        self.status_code = status_code
+        super(CustomErrorHandler,self).__init__(application,request)
+    
+    def get(self):
+        self.get_error_html(self.status_code)
+    
 
 class HomeHandler(BaseHandler):
     def get(self):</diff>
      <filename>demos/blog/blog.py</filename>
    </modified>
    <modified>
      <diff>@@ -59,7 +59,7 @@ class BaseHandler(tornado.web.RequestHandler):
         user_json = self.get_secure_cookie(&quot;user&quot;)
         if not user_json: return None
         return tornado.escape.json_decode(user_json)
-
+    
 
 class MainHandler(BaseHandler, tornado.auth.FacebookMixin):
     @tornado.web.authenticated</diff>
      <filename>demos/facebook/facebook.py</filename>
    </modified>
    <modified>
      <diff>@@ -966,7 +966,10 @@ class Application(object):
                     args = match.groups()
                     break
             if not handler:
-                handler = ErrorHandler(self, request, 404)
+                if self.error_handler:
+                    handler = self.error_handler(self, request, 404)
+                else:
+                    handler = ErrorHandler(self, request, 404)
 
         # In debug mode, re-compile templates and reload static files on every
         # request so you don't need to restart to see changes</diff>
      <filename>tornado/web.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>40df134be6f8d2c9bc4b86fcdaa61dd93ef11c42</id>
    </parent>
  </parents>
  <author>
    <name>Aaron Raddon</name>
    <email>araddon@yahoo.com</email>
  </author>
  <url>http://github.com/araddon/tornado/commit/1cff257b13f71ae01d012f41788743126900bdf4</url>
  <id>1cff257b13f71ae01d012f41788743126900bdf4</id>
  <committed-date>2009-11-03T12:18:05-08:00</committed-date>
  <authored-date>2009-11-03T12:18:05-08:00</authored-date>
  <message>adding error handler support for 404s to tornado and an example of how to use in the blog app, the existing tornado error override didnt work for 404s</message>
  <tree>1653ffca7875bc2ceed0c1e7c30a7ba7382f10ca</tree>
  <committer>
    <name>Aaron Raddon</name>
    <email>araddon@yahoo.com</email>
  </committer>
</commit>
