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