Always write index.html
diff --git a/tools/run_tests/run_microbenchmark.py b/tools/run_tests/run_microbenchmark.py
index e735ff8..09f2eb1 100755
--- a/tools/run_tests/run_microbenchmark.py
+++ b/tools/run_tests/run_microbenchmark.py
@@ -228,38 +228,39 @@
                   help='Minimum time to run benchmarks for the summary collection')
 args = argp.parse_args()
 
-for bm_name in args.benchmarks:
-  for collect in args.collect:
-    collectors[collect](bm_name, args)
-if args.diff_perf:
-  if 'summary' not in args.collect:
-    for bm_name in args.benchmarks:
-      run_summary(bm_name, 'opt', bm_name)
-      run_summary(bm_name, 'counters', bm_name)
-  where_am_i = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip()
-  subprocess.check_call(['git', 'checkout', args.diff_perf])
-  comparables = []
-  subprocess.check_call(['make', 'clean'])
-  try:
-    for bm_name in args.benchmarks:
-      try:
-        run_summary(bm_name, 'opt', '%s.old' % bm_name)
-        run_summary(bm_name, 'counters', '%s.old' % bm_name)
-        comparables.append(bm_name)
-      except subprocess.CalledProcessError, e:
-        pass
-  finally:
-    subprocess.check_call(['git', 'checkout', where_am_i])
-  for bm_name in comparables:
-    diff = subprocess.check_output(['tools/profiling/microbenchmarks/bm_diff.py',
-                                    '%s.opt.json' % bm_name,
-                                    '%s.counters.json' % bm_name,
-                                    '%s.old.opt.json' % bm_name,
-                                    '%s.old.counters.json' % bm_name]).strip()
-    if diff:
-      heading('Performance diff: %s' % bm_name)
-      text(diff)
-
-index_html += "</body>\n</html>\n"
-with open('reports/index.html', 'w') as f:
-  f.write(index_html)
+try:
+  for bm_name in args.benchmarks:
+    for collect in args.collect:
+      collectors[collect](bm_name, args)
+  if args.diff_perf:
+    if 'summary' not in args.collect:
+      for bm_name in args.benchmarks:
+        run_summary(bm_name, 'opt', bm_name)
+        run_summary(bm_name, 'counters', bm_name)
+    where_am_i = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip()
+    subprocess.check_call(['git', 'checkout', args.diff_perf])
+    comparables = []
+    subprocess.check_call(['make', 'clean'])
+    try:
+      for bm_name in args.benchmarks:
+        try:
+          run_summary(bm_name, 'opt', '%s.old' % bm_name)
+          run_summary(bm_name, 'counters', '%s.old' % bm_name)
+          comparables.append(bm_name)
+        except subprocess.CalledProcessError, e:
+          pass
+    finally:
+      subprocess.check_call(['git', 'checkout', where_am_i])
+    for bm_name in comparables:
+      diff = subprocess.check_output(['tools/profiling/microbenchmarks/bm_diff.py',
+                                      '%s.opt.json' % bm_name,
+                                      '%s.counters.json' % bm_name,
+                                      '%s.old.opt.json' % bm_name,
+                                      '%s.old.counters.json' % bm_name]).strip()
+      if diff:
+        heading('Performance diff: %s' % bm_name)
+        text(diff)
+finally:
+  index_html += "</body>\n</html>\n"
+  with open('reports/index.html', 'w') as f:
+    f.write(index_html)