Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Gestione eccezzioni - eccezioni.rb

eccezioni.rb

Caricato da: Red
Scarica il programma completo

  1. =begin
  2.   File d'esempio su come si gestiscono le eccezioni in Ruby:
  3. =end
  4. class Tris
  5.  
  6.   def initialize
  7.     @campo=Array.new(3)
  8.     @campo.collect!{|x| x=Array.new(3,false)}
  9.   end
  10.  
  11.   def inspect
  12.     info=""
  13.     for i in 0...@campo.length
  14.       info=info+@campo[i].join(" ")+"\n"
  15.     end
  16.     return info
  17.   end
  18.  
  19.   def piazzaPedina x,y
  20.     if(x<=0 || x>@campo.length)
  21.                         raise "coordinata x fuori al campo"   #il comando raise solleva l'eccezzione
  22.     elsif(y<=0 || y>@campo[0].length)
  23.                         raise "coordinata y fuori al campo"
  24.     end
  25.                 x=x-1
  26.                 y=y-1
  27.                 if(@campo[x][y]==true)
  28.                         raise "casella occupata"
  29.     end
  30.                 @campo[x][y]=true;
  31.   end
  32.  
  33. end
  34.  
  35. def main
  36.  
  37.   campo=Tris.new
  38.   5.times do
  39.     print "Inserisci coordinata x: "
  40.     x=gets.chomp
  41.     print "\nInserisci coordinata y: "
  42.     y=gets.chomp
  43.     begin #inizio del blocco begin all'interno del quale può essere sollevata un eccezzione
  44.       campo.piazzaPedina(x.to_i,y.to_i)
  45.     rescue #il blocco rescue gestisce gli errori nel caso l'eccezzione venga sollevato
  46.       print "Errore:",$!
  47.     ensure #il blocco ensure contiene istruzioni che vengono eseguite indipendentemente se l'eccezzione è stata solleva o no
  48.       puts campo.inspect
  49.     end
  50.   end
  51. end
  52.  
  53. main