In Capistrano 2.x you could simply add :on_error => :continue like this:
task :bad_script, :on_error => :continue do
    my_error = capture('/path/to/tomcat/shutdown.sh')
end
I don't see any way to do this in Capistrano 3.x or ssh-kit (the underlying communication.) Any help would be appreciated.
task :bad_script do
  server_is_down
    on roles :all do
      begin
        server_is_down = capture('/path/to/tomcat/shutdown.sh')
      rescue
        #do something if server_is_down has the correct text
      end
    end
  end
end
I've tried surrounding the new way in begin/rescue blocks but that only stops it from erroring but it does not return the output from the error.
I'd still like to know how to do this but I figured out a way around needing it for my one case and that is to just set server is down if it fails.
task :bad_script do
  server_is_down = false
    on roles :all do
      begin
        execute('/path/to/tomcat/shutdown.sh')
      rescue
        server_is_down = true
      end
    end
  end
end
This is assuming that it only errors when the shutdown takes place.