# Ruby: gestione delle eccezioni

**URL:** <https://www.ruby-forum.com/t/ruby-gestione-delle-eccezioni/144600>\
**Category:** IT\
**Created:** [July 31, 2008, 12:00pm UTC](https://www.ruby-forum.com/t/ruby-gestione-delle-eccezioni/144600 "2008-07-31T12:00:10Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [July 31, 2008, 12:00pm UTC](https://www.ruby-forum.com/t/ruby-gestione-delle-eccezioni/144600/1 "2008-07-31T12:00:10Z")

</div>

Ciao a tutti,

le istruzioni all’interno di un ciclo sono racchiuse tra “begin - rescue  
-end”;  
alla i-esima iterazione ho un errore, entro nel rescue e stampo un  
messaggio, ma poi esco anche dal ciclo esterno (???);  
o non ho capito bene il funzionamento della rescue oppure c’è un  
problema che non riesco a vedere…  
dentro al blocco rescue ho provato a mettere anche l’istruzione next …  
ma niente (anche se in teroria non credo che serva… era una mossa della  
disperazione).

## Vi posto il codice

f3.each\_line do |line|

begin

```
fileName = line.split('|')[0]
File.delete(fileName)
f4.write("#{fileName}|DELETED\n")

numero_righe_deleted = numero_righe_deleted +1

```

rescue Exception =\> ex

```
puts("File #{fileName} not deleted - exception #{ex.message}\n")
next

```

end

end

## puts(“Numero di righe deleted #{numero\_righe\_deleted}”)

ecco l’output:

Numero di righe zippate 2104  
File /xxxxxxxxxxxxxxxx not deleted - exception No such file or directory

- //xxxxxxxxxxxxxxxxxxxxxxxx  
Numero di righe deleted 2066

Grazie in anticipo

Luigi

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [July 31, 2008, 12:11pm UTC](https://www.ruby-forum.com/t/ruby-gestione-delle-eccezioni/144600/2 "2008-07-31T12:11:53Z")

</div>

se non sbaglio quando un’ eccezione viene sollevata si stoppa l’  
esecuzione del metodo per richiamare(se esiste) il metodo rescue al  
suo interno, dovrebbe essere un po come il return, solleva eccezione,  
lancia la rescue e fa return.

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [July 31, 2008, 1:10pm UTC](https://www.ruby-forum.com/t/ruby-gestione-delle-eccezioni/144600/3 "2008-07-31T13:10:26Z")

</div>

Ciao a tutti,  
solo per la cronaca credo di aver capito… è una mia grossa  
C\*\*\*\*\*A…

in effetti il begin-rescue-end dentro ad un loop ritorna il controllo al  
loop…  
in questo caso specifico il problema era dovuto al fatto che il loop è  
su un file di testo che in effetti non era ancora stato creato  
fisicamente…  
infatti spezzando lo script in 2 script: uno zippa e riempi il file di  
testo, l’altro legge il file di testo ed elimina i file tutto  
funziona…  
anzi c’è un modo per aspettare che il file sia stato fisicamente scritto  
sul filesystem prima di leggerlo se la creazione e la lettura  
vengono fatte all’inteno di uno stesso script ?

Grazie per l’attenzione.

Luigi

- 

- 

Luigi M. ha scritto:

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [July 31, 2008, 12:20pm UTC](https://www.ruby-forum.com/t/ruby-gestione-delle-eccezioni/144600/4 "2008-07-31T12:20:40Z")

</div>

si ma se sono dentro un loop e voglio continuare ad iterare ?  
In questo caso ad ogni iterazione c’è un file diverso da eliminare, se  
uno mi da errore voglio proseguire eliminando gli altri … non  
funziona come un try/catch ?

Luigi

Andrea (Q) ha scritto:

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [August 5, 2008, 12:39pm UTC](https://www.ruby-forum.com/t/ruby-gestione-delle-eccezioni/144600/5 "2008-08-05T12:39:57Z")

</div>

Luigi M. wrote:

> Ciao a tutti,  
> solo per la cronaca credo di aver capito… ï¿½ una mia grossa  
> C\*\*\*\*\*A…
> 
> in effetti il begin-rescue-end dentro ad un loop ritorna il controllo al  
> loop…  
> in questo caso specifico il problema era dovuto al fatto che il loop ï¿½  
> su un file di testo che in effetti non era ancora stato creato  
> fisicamente…  
> infatti spezzando lo script in 2 script: uno zippa e riempi il file di  
> testo, l’altro legge il file di testo ed elimina i file tutto  
> funziona…  
> anzi c’ï¿½ un modo per aspettare che il file sia stato fisicamente scritto  
> sul filesystem prima di leggerlo se la creazione e la lettura  
> vengono fatte all’inteno di uno stesso script ?
> 
> Grazie per l’attenzione.
> 
> Luigi

bah secondo em si puo’ fare tutto in un unico script, comunque invece di  
fare il programmatore improsvvisato leggi le documentazione e comprati i  
libri 😉
