diff --git a/lib/transpec/cli.rb b/lib/transpec/cli.rb
index <HASH>..<HASH> 100644
--- a/lib/transpec/cli.rb
+++ b/lib/transpec/cli.rb
@@ -26,8 +26,13 @@ module Transpec
     end
 
     def run(args)
-      paths = OptionParser.new(@configuration).parse(args)
-      fail_if_should_not_continue!
+      begin
+        paths = OptionParser.new(@configuration).parse(args)
+        fail_if_should_not_continue!
+      rescue => error
+        warn error.message
+        return false
+      end
 
       process(paths)
 
@@ -35,9 +40,6 @@ module Transpec
       generate_commit_message if @configuration.generate_commit_message?
 
       true
-    rescue => error
-      warn error.message
-      false
     end
 
     def process(paths)
diff --git a/spec/transpec/cli_spec.rb b/spec/transpec/cli_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/transpec/cli_spec.rb
+++ b/spec/transpec/cli_spec.rb
@@ -127,13 +127,8 @@ module Transpec
       context 'when any other error is raised while running' do
         let(:args) { ['non-existent-file'] }
 
-        it 'return false' do
-          should be_false
-        end
-
-        it 'prints message of the exception' do
-          cli.should_receive(:warn).with(/No such file or directory/)
-          cli.run(args)
+        it 'does not catch the error' do
+          -> { cli.run(args) }.should raise_error
         end
       end
Avoid catching general errors in CLI