# File lib/merb-core/dispatch/dispatcher.rb, line 52
    def handle
      start = Time.now
      Merb.logger.info { "Started request handling: #{start.to_s}" }
      
      find_route!
      return rack_response if handled?
      
      klass = controller
      Merb.logger.debug { "Routed to: #{params.inspect}" }
      
      unless klass < Controller
        raise NotFound, 
          "Controller '#{klass}' not found.\n" \
          "If Merb tries to find a controller for static files, " \
          "you may need to check your Rackup file, see the Problems " \
          "section at: http://wiki.merbivore.com/pages/rack-middleware"
      end
      
      if klass.abstract?
        raise NotFound, "The '#{klass}' controller has no public actions"
      end
      
      controller = dispatch_action(klass, params[:action])
      controller._benchmarks[:dispatch_time] = Time.now - start
      Merb.logger.info { controller._benchmarks.inspect }
      Merb.logger.flush
      controller.rack_response
    rescue Object => exception
      dispatch_exception(exception).rack_response
    end