=begin
File d'esempio su come si gestiscono le eccezioni in Ruby:
=end
class Tris
def initialize
@campo=Array.new(3)
@campo.collect!{|x| x=Array.new(3,false)}
end
def inspect
info=""
for i in 0...@campo.length
info=info+@campo[i].join(" ")+"\n"
end
return info
end
def piazzaPedina x,y
if(x<=0 || x>@campo.length)
raise "coordinata x fuori al campo" #il comando raise solleva l'eccezzione
elsif(y<=0 || y>@campo[0].length)
raise "coordinata y fuori al campo"
end
x=x-1
y=y-1
if(@campo[x][y]==true)
raise "casella occupata"
end
@campo[x][y]=true;
end
end
def main
campo=Tris.new
5.times do
print "Inserisci coordinata x: "
x=gets.chomp
print "\nInserisci coordinata y: "
y=gets.chomp
begin #inizio del blocco begin all'interno del quale può essere sollevata un eccezzione
campo.piazzaPedina(x.to_i,y.to_i)
rescue #il blocco rescue gestisce gli errori nel caso l'eccezzione venga sollevato
print "Errore:",$!
ensure #il blocco ensure contiene istruzioni che vengono eseguite indipendentemente se l'eccezzione è stata solleva o no
puts campo.inspect
end
end
end
main