diff --git a/java/com/google/gitiles/DefaultErrorHandlingFilter.java b/java/com/google/gitiles/DefaultErrorHandlingFilter.java
index 459347c..89086aa 100644
--- a/java/com/google/gitiles/DefaultErrorHandlingFilter.java
+++ b/java/com/google/gitiles/DefaultErrorHandlingFilter.java
@@ -57,24 +57,14 @@
       }
     } catch (RepositoryNotFoundException e) {
       try {
-        res.setHeader(GITILES_ERROR, FailureReason.REPOSITORY_NOT_FOUND.toString());
-        renderHtml(
-            req,
-            res,
-            FailureReason.REPOSITORY_NOT_FOUND.getHttpStatusCode(),
-            FailureReason.REPOSITORY_NOT_FOUND.getMessage());
+        renderHtml(req, res, FailureReason.REPOSITORY_NOT_FOUND);
       } catch (IOException e2) {
         e.addSuppressed(e2);
         throw e;
       }
     } catch (AmbiguousObjectException e) {
       try {
-        res.setHeader(GITILES_ERROR, FailureReason.AMBIGUOUS_OBJECT.toString());
-        renderHtml(
-            req,
-            res,
-            FailureReason.AMBIGUOUS_OBJECT.getHttpStatusCode(),
-            FailureReason.AMBIGUOUS_OBJECT.getMessage());
+        renderHtml(req, res, FailureReason.AMBIGUOUS_OBJECT);
       } catch (IOException e2) {
         e.addSuppressed(e2);
         throw e;
@@ -89,12 +79,7 @@
     } catch (IOException | ServletException e) {
       try {
         log.warn("Internal server error", e);
-        res.setHeader(GITILES_ERROR, FailureReason.INTERNAL_SERVER_ERROR.toString());
-        renderHtml(
-            req,
-            res,
-            FailureReason.INTERNAL_SERVER_ERROR.getHttpStatusCode(),
-            FailureReason.INTERNAL_SERVER_ERROR.getMessage());
+        renderHtml(req, res, FailureReason.INTERNAL_SERVER_ERROR);
       } catch (IOException e2) {
         e.addSuppressed(e2);
         throw e;
@@ -102,6 +87,12 @@
     }
   }
 
+  private void renderHtml(HttpServletRequest req, HttpServletResponse res, FailureReason reason)
+      throws IOException {
+    res.setHeader(GITILES_ERROR, reason.toString());
+    renderHtml(req, res, reason.getHttpStatusCode(), reason.getMessage());
+  }
+
   private void renderHtml(
       HttpServletRequest req, HttpServletResponse res, int status, String message)
       throws IOException {
@@ -116,7 +107,7 @@
   }
 
   private Map<String, ?> startHtmlResponse(
-      HttpServletRequest req, HttpServletResponse res, Map<String, ?> soyData) throws IOException {
+      HttpServletRequest req, HttpServletResponse res, Map<String, ?> soyData) {
     res.setContentType(FormatType.HTML.getMimeType());
     res.setCharacterEncoding(UTF_8.name());
     BaseServlet.setNotCacheable(res);
