class Sinatra::Base

def handle_exception!(boom)

Error handling during requests.
def handle_exception!(boom)
  if error_params = @env['sinatra.error.params']
    @params = @params.merge(error_params)
  end
  @env['sinatra.error'] = boom
  if boom.respond_to? :http_status
    status(boom.http_status)
  elsif settings.use_code? and boom.respond_to? :code and boom.code.between? 400, 599
    status(boom.code)
  else
    status(500)
  end
  status(500) unless status.between? 400, 599
  if server_error?
    dump_errors! boom if settings.dump_errors?
    raise boom if settings.show_exceptions? and settings.show_exceptions != :after_handler
  elsif not_found?
    headers['X-Cascade'] = 'pass' if settings.x_cascade?
    body '<h1>Not Found</h1>'
  elsif bad_request?
    dump_errors! boom if settings.dump_errors?
    halt status
  end
  res = error_block!(boom.class, boom) || error_block!(status, boom)
  return res if res or not server_error?
  raise boom if settings.raise_errors? or settings.show_exceptions?
  error_block! Exception, boom
end