diff --git a/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RCommand.java b/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RCommand.java
index fc99b4772ba99fe30506607155c1493b56ceebc2..dc891a94003a5e84a79b27dc8077cea4b4fbacb4 100644
--- a/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RCommand.java
+++ b/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RCommand.java
@@ -104,9 +104,13 @@ public class RCommand {
     }
 
     public static void main(String[] args) {
-        System.exit(doMain(prependCommand(args), null, System.in, System.out, System.err));
-        // never returns
-        throw fatal("main should never return");
+        try {
+            System.exit(doMain(prependCommand(args), null, System.in, System.out, System.err));
+            // never returns
+            throw fatal("main should never return");
+        } catch (Throwable t) {
+            throw fatal(t, "error during REPL execution");
+        }
     }
 
     static String[] prependCommand(String[] args) {