Questo è un tarlo che mi rosicchia da tanto.
In Visual Basic 6 la gestione degli errori era un pò particolare, ma mi dava modo di poter ritornare all'istruzione successiva (o quella che volevo io) dopo aver gestito l'errore a modo mio.
Tutti ora sputeranno perterra con fare sprezzante e poi diranno "Si, ma si usavano i GOTO, che sono il male!", però io continuo a dire che non era malaccio il sistema, in fin dei conti.
Ora, essendo passato a C# mi chiedevo questa cosa:
Nell'eventualità che una determinata operazione nel TRY mi dia errore, nella CATCH, una volta gestito l'errore, posso ritornare all'istruzione successiva a quella che nella TRY mi ha generato l'errore?
Vi chiedo questo perchè ieri mi sono trovato di fronte a questo problema.
Avevo un file TXT, era un'esportazione da un DB, ogni riga erano tutti i dati di un record di una tabella, ogni dato aveva il suo spazio.
Il problema era che deve averlo esportato male e le righe erano doppie, ovvero, per praticamente quasi tutti i record c'erano due righe uguali.
Facendo una procedura che mi inseriva in una tabella i record incorrevo quasi subito in un errore di chiave primaria duplicata...
A parte il fatto che potevano gestire meglio il metodo ExecuteNoQuery del Commad (invece di cacciare errore mi cacciava 0 così capivo che qualcosa era andato storto), ma il problema era che alzato l'errore, andava nel catch e saluti a tutti...
Mi sarebbe tanto piaciutò che, riconosciuto l'errore, potevo ritornare all'istruzione successiva, in maniera tale che poi nella tabella avevo i campi giusti senza duplicati...
Un metodo efficace srabbe stato fare un select prima di ogni insert, ma avrebbe compromesso la velocità di esecuzione del codice, voi avete suggerimenti?
Grazie

Rispondi quotando