Ridefinire exception non lo puoi fare. Quello che puoi fare, quando scrivi una classe tua è lanciare errori personalizzati ai chiamanti delle tue funzioni.
Se classe A chiama un metodo di classe B, questo metodo potrebbe andare in errore e lanciare un eccezione personalizzata ad A, ad esempio B.MyCustomizedExceptoin (che ovviamente eredita da Exception).
A quindi, dal canto suo, può fare 2 cose: catturare l'eccezione specifica oppure catturare quella generale (System.Exception)
try
catch ex as B.MyCustomizedExceptoin
'gestisco quella customizzata
catch ex as exception
' gestisco quelle generiche
Se levo catch ex as B.MyCustomizedExceptoin
un eccezione che dovesse arrivare di tipo B.MyCustomizedExceptoin verrà gestita comunque come eccezione generica perchè come padre ha System.Exception
Questo però ti permette solo di gestire eccezioni della classe B, se ho capito bene, te vuoi invece gestire errori che potrebbero essere avvenuti un po' ovunque. In questo caso ti consiglio di lasciar perdere la creazione di un'eccezione custom e crearti un bel metodo statico (shared) che ricihami ad ogni eccezione dove vuoi scrivere su DB
//in una classe di Utility, ovvero inclusa e visibile da tutte le classi del progetto:
public shared sub SrciviEccezioneSuDb(byval ex as exception)
'scrivi su db
e poi la richiami dal blocco di gestione dell'eccezione
try
catch ex as exception
-----MyUtilClass.SrciviEccezioneSuDb(ex)
-----messaggio all'utente

Rispondi quotando