mercurial/dispatch.py
changeset 29773 39149b6036e6
parent 29132 12769703d4ba
child 29792 2654a0aac80d
--- a/mercurial/dispatch.py	Wed Aug 10 04:35:44 2016 +0530
+++ b/mercurial/dispatch.py	Tue Aug 09 16:45:28 2016 +0100
@@ -150,7 +150,7 @@
     except ValueError:
         pass # happens if called in a thread
 
-    try:
+    def _runcatchfunc():
         try:
             debugger = 'pdb'
             debugtrace = {
@@ -212,6 +212,16 @@
             ui.traceback()
             raise
 
+    return callcatch(ui, _runcatchfunc)
+
+def callcatch(ui, func):
+    """call func() with global exception handling
+
+    return func() if no exception happens. otherwise do some error handling
+    and return an exit code accordingly.
+    """
+    try:
+        return func()
     # Global exception handling, alphabetically
     # Mercurial-specific first, followed by built-in and library exceptions
     except error.AmbiguousCommand as inst: