raise reports invalid input from a method, and callers can rescue that error.

Raise Exception

raise_exception.rb
def seats_for(requested)
  raise ArgumentError, "too small" if requested < 1
  raise ArgumentError, "too large" if requested > 6

  requested
end

requested = 

begin
  seats = seats_for(requested)
  puts "seats=#{seats}"
rescue ArgumentError => error
  puts "error=#{error.message}"
end
def seats_for(requested)
  raise ArgumentError, "too small" if requested < 1
  raise ArgumentError, "too large" if requested > 6

  requested
end

requested = 

begin
  seats = seats_for(requested)
  puts "seats=#{seats}"
rescue ArgumentError => error
  puts "error=#{error.message}"
end
def seats_for(requested)
  raise ArgumentError, "too small" if requested < 1
  raise ArgumentError, "too large" if requested > 6

  requested
end

requested = 

begin
  seats = seats_for(requested)
  puts "seats=#{seats}"
rescue ArgumentError => error
  puts "error=#{error.message}"
end
raise `raise` creates an exception when a method cannot safely continue.