# Uscita dal metodo con "break"

**URL:** <https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977>\
**Category:** IT\
**Created:** [April 19, 2011, 11:45pm UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977 "2011-04-19T23:45:57Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [April 19, 2011, 11:45pm UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977/1 "2011-04-19T23:45:57Z")

</div>

Come da titolo, come potrei uscire da un metodo, utilizzando il “break”,  
ovvero interrompendo l’esecuzione del metodo stesso?  
Per fare un piccolo esempio  
class Array  
def metodo(\*lista)  
if(lista.size\<2)  
puts “mancano alcuni elementi”

> > Break\<\<  
> > end  
> > puts “Ci sono tutti gli elementi necessari”  
> > end  
> > end  
> > Se a metodo, passo meno di 2 parametri, stampa “mancano alcuni elementi”  
> > e poi esce da tutto il metodo. Devo ragionare come se stessi catturando  
> > un errore?

Ringrazio chiunque risponda!

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [April 19, 2011, 11:47pm UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977/2 "2011-04-19T23:47:37Z")

</div>

Si, usa raise

ngw

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [April 20, 2011, 12:26am UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977/3 "2011-04-20T00:26:04Z")

</div>

Nicholas W. wrote in post #993855:

> Si, usa raise
> 
> ngw  
> Ho seguito alcuni esempi alla voce “raise” qui  
> [Ruby Syntax](http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/syntax.html#raise)  
> Ma ogni volta mi restituisce un RuntimeError; posso utilizzarlo cosi?=\>  
> if (condizione)  
> fai qualcosa  
> raise “Errore”  
> end

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [April 20, 2011, 9:06am UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977/4 "2011-04-20T09:06:38Z")

</div>

Nel tuo caso, il tipo di errore “mi hai passato dei parametri  
invalidi”,  
dunque l’eccezione pi appropriata ArgumentError.

```
class Array

  def metodo(*lista)
    unless lista.size >= 2
      raise ArgumentError, "mancano alcuni elementi"
    end
    # ...
  end

end

```

2011/4/20 Andrea R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> raise “Errore”  
> end
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Ml mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Simone C.  
Application Developer

Site & Blog: [http://www.simonecarletti.com](http://www.simonecarletti.com)  
Email: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [Simone Carletti - DNSimple | LinkedIn](http://linkedin.com/in/weppos)  
Skype: weppos

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [April 20, 2011, 2:00pm UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977/5 "2011-04-20T14:00:09Z")

</div>

Scusa, forse non ho capito bene io, ma un bel return no?  
Perché vuoi sollevare proprio un’eccezione?  
Questo per quel che riguarda la tua domanda originale…

Per il resto il metodo funziona benissimo, ma guarda che l’argomento è  
in entrambi i tuoi due casi di size 0: non gli passi argomenti!

prova:

a.metodo “arg1”, “arg2”

e vedi cosa ti dice. 😉

Forse tu volevi questo:

class Array

```
  def metodo
    unless self.size >= 2
      raise ArgumentError, "mancano alcuni elementi"
    end
    puts "Nella lista ci sono almeno 3 elementi"
  end

end

```

## O mi sbaglio? 🙂 Ciao!

Andrea

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [April 20, 2011, 2:05pm UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977/6 "2011-04-20T14:05:00Z")

</div>

Grazie mille Andrea. Svelato l’arcano.  
Grazie a tutti voi  
Nicholas W.  
Simone C.  
Andrea Salicetti  
muchas gracias!!!

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [April 20, 2011, 1:42pm UTC](https://www.ruby-forum.com/t/uscita-dal-metodo-con-break/205977/7 "2011-04-20T13:42:28Z")

</div>

ArgumentError  
a parte il fatto che non funziona molto bene, testato su irb mi  
restituisce sempre “mancano alcuni argomenti”. Posto qui il codice  
testato (sempre su irb):  
a=[1,2,3,4,5]  
b=[1]  
class Array

```
  def metodo(*lista)
    unless lista.size >= 2
      raise ArgumentError, "mancano alcuni elementi"
    end
    puts "Nella lista ci sono almeno 3 elementi"
  end

end

```

a.metodo  
=\>ArgumentError: mancano alcuni elementi  
from (irb):4:in `metodo' from (irb):25 from :0 b.metodo =>ArgumentError: mancano alcuni elementi from (irb):4:in`metodo’  
from (irb):26  
from :0  
Ancora grazie per il vostro supporto!
