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
on 31.07.2008 12:00
on 31.07.2008 12:11
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.
on 31.07.2008 12:20
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:
on 31.07.2008 13:10
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 Maroncelli ha scritto:
on 05.08.2008 12:39
Luigi Maroncelli 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 ;)