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