2011-11-15 10 views
5

Sto tentando di restituire un messaggio di errore user friendly quando un'eccezione Mysql viene lanciata in C#. Attualmente sto restituendo il messaggio di eccezione ma quel messaggio non è molto user friendly. Quindi mi stavo chiedendo se qualcuno di voi avesse qualche trucco che non richiedesse un'ingegnosa regex per analizzare i messaggi di errore ricevuti per visualizzarli all'utente in un modo che avrebbe senso per loro.Rendi gli errori Mysql catturati in C# user friendly

Sto cercando di stare lontano dal codice di convalida complesso prima di inserire/aggiornare/cancellare un record ma quello sembra essere l'unico modo ... a meno che tu non conosca meglio!

+2

Ogni errore mysql ha un codice di errore: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html È possibile scrivere i propri messaggi di errore per quelli. –

+0

Hey Marc, sembra una buona idea, ma da quale metodo nell'oggetto eccezione posso ottenere questo codice? Mi sembra di ottenere solo l'eccezione MySql.Data e il messaggio dal db senza il codice di errore – Stainedart

risposta

6

Come Marc B sottolineato che ogni errore di MySQL è un codice di errore, in modo da poter prendere un MySqlException utilizzando un blocco try ... catch come questo:

try 
{ 

} 
catch (MySqlException ex) 
{ 
    int errorcode = ex.Number; 
} 

Quindi è possibile scrivere una dichiarazione di caso per fornire il messaggio di errore per ogni codice di errore, qui c'è una lista di server error codes and messages.

+0

Sì, ho capito che il mio problema principale era che stavo rilevando Eccezione e non la specifica MySqlException, quindi non avevo accesso all'attributo Numero. Molte grazie. – Stainedart

+0

In realtà grazie a @ Mark B. –

1

Si potrebbe provare a catturare il messaggio di errore sql specifica e visualizzarla

Try 

Catch ex as SqlException 
'''sql specific error message 
''ie: 
response.write("oops! error message: " & ex.message) 
Catch ex as Exception 
'''any other runtime error messages 
End Try 
+0

Ciao Carlos, questo è quello che sto facendo attualmente, ma una chiave duplicata sull'inserimento non è un messaggio facilmente comprensibile da tutti quelli che sto cercando di costruire su quegli errori un messaggio user-friendly come "il valore inserito è già presente nel sistema" – Stainedart

+0

Sfortunatamente non c'è modo di tradurre i messaggi di errore in parole che il tuo Joe medio capirà. Quello che ho fatto in passato è usare un file di risorse e inserire in una colonna il messaggio di eccezione .Net e quindi nella seconda colonna la traduzione dell'enduser. Molto minuzioso, ma per quel progetto avevo bisogno che l'errore fosse facile da capire dall'utente. Le eccezioni sono davvero progettate per i programmatori da gestire a livello di codice (traducono in un messaggio user-friendly, registrano l'errore, ecc.) Per gestire gli errori con maggiore grazia. – Losbear

Problemi correlati