Add exception processing to properly report gerrit errors

Catch chromite errors and terminate gracefully making it easier to
understand what exactly went wrong.

BUG=none
TEST=manual
  . tried running commands triggering errors, observed error messages:

$ gerrit review 38487 1
error: Change is closed
one or more approvals failed; review output above

Change-Id: I4d641f1c6f1dd37ef3fadb879cef286f03ec496d
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/56421
Reviewed-by: David James <davidjames@chromium.org>
diff --git a/scripts/gerrit.py b/scripts/gerrit.py
index cffa4f9..89fa29a 100644
--- a/scripts/gerrit.py
+++ b/scripts/gerrit.py
@@ -13,6 +13,7 @@
 
 import inspect
 import os
+import sys
 
 from chromite.buildbot import constants
 from chromite.lib import commandline
@@ -302,6 +303,10 @@
     if len(argspec.args) - 1 != len(args):
       parser.error('incorrect number of args: %s expects %s' %
                    (cmd, len(argspec.args) - 1))
-    functor(opts, *args)
+    try:
+      functor(opts, *args)
+    except cros_build_lib.RunCommandError:
+      # An error message has been issued on stderr by now.
+      sys.exit(1)
   else:
     parser.error('unknown action: %s' % (cmd,))