# File lib/transat/parser.rb, line 101
    def parse_and_execute(args=ARGV)
      begin
        command, non_options = parse(args)
        execute(command, non_options)
      rescue HelpNeeded
        $stderr.puts usage($!.command)
        exit 1
      rescue VersionNeeded
        puts "#{program_name} #{version}"
        exit 0
      rescue NoCommandGiven, UnknownOptions, UnknownCommand
        $stderr.puts "ERROR: #{$!.message}"
        $stderr.puts usage($!.respond_to?(:command) ? $!.command : nil)
        exit 1
      end
    end