diff --git a/fsl/scripts/imcp.py b/fsl/scripts/imcp.py
index 9b7129755a7fbf2a0acc35dab0df758e7b0fb76e..5f8367fd882286b2aee4ab27377c13e408ab4dfc 100755
--- a/fsl/scripts/imcp.py
+++ b/fsl/scripts/imcp.py
@@ -43,13 +43,15 @@ def main(argv=None):
         argv = sys.argv[1:]
 
     if len(argv) < 2:
-        raise RuntimeError(usage)
+        print(usage)
+        return 1
 
     srcs = argv[:-1]
     dest = argv[ -1]
 
     if len(srcs) > 1 and not op.isdir(dest):
-        raise RuntimeError(usage)
+        print(usage)
+        return 1
 
     srcs = fslpath.removeDuplicates(srcs,
                                     allowedExts=fslimage.ALLOWED_EXTENSIONS,
@@ -58,11 +60,8 @@ def main(argv=None):
     for src in srcs:
         imcp.imcp(src, dest, useDefaultExt=True, overwrite=True)
 
+    return 0
 
-if __name__ == '__main__':
 
-    try:
-        main()
-    except Exception as e:
-        print(e)
-        sys.exit(1)
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/fsl/scripts/immv.py b/fsl/scripts/immv.py
index 90a52f9635b7d05bbde35726fdfa5be617e13366..6a1397e2aa4569f27aae6664588a50b4ce213467 100755
--- a/fsl/scripts/immv.py
+++ b/fsl/scripts/immv.py
@@ -44,13 +44,15 @@ def main(argv=None):
         argv = sys.argv[1:]
 
     if len(argv) < 2:
-        raise RuntimeError(usage)
+        print(usage)
+        return 1
 
     srcs = argv[:-1]
     dest = argv[ -1]
 
     if len(srcs) > 1 and not op.isdir(dest):
-        raise RuntimeError(usage)
+        print(usage)
+        return 1
 
     srcs = fslpath.removeDuplicates(srcs,
                                     allowedExts=fslimage.ALLOWED_EXTENSIONS,
@@ -59,10 +61,8 @@ def main(argv=None):
     for src in srcs:
         imcp.immv(src, dest, useDefaultExt=True, overwrite=True)
 
+    return 0
+
 
 if __name__ == '__main__':
-    try:
-        main()
-    except Exception as e:
-        print(e)
-        sys.exit(1)
+    sys.exit(main())