2009-11-25 2 views

Répondre

0

Oui vous pouvez, mais normalement vous ne voulez pas afficher les messages d'erreur du système pour les utilisateurs - Il serait préférable d'afficher un message convivial. Cela étant dit, il suffit de créer une étiquette et de définir la propriété Text de la propriété @myError.

0

Je recommande d'utiliser TRY/CATCH dans T-SQL au lieu de @@ ERROR. Ce dernier est notoirement problématique car il est réinitialisé après chaque instruction. Pour plus de détails, voir

Je préfère beaucoup TRY/CATCH, en utilisant un modèle de procédure comme celle décrite ici: Exception handling and nested transactions. De cette façon, une erreur est levée dans votre ASP.Net en tant que SqlException que vous pouvez attraper, comme toute autre exception CLR.

2

Vous pouvez utiliser l'événement InfoMessage du SqlConnection pour envoyer des avertissements SQL et des messages d'information au client. Par défaut, l'événement n'est déclenché que pour les messages d'information severity of less than 10. En définissant la propriété FireInfoMessageEventOnUserErrors du SqlConnection sur true, vous pouvez déclencher l'événement InfoMessage pour des erreurs de gravité de 11 à 16 au lieu d'émettre une exception et d'arrêter l'exécution. En ajoutant un gestionnaire d'événements pour l'événement InfoMessage, nous pouvons envoyer le message au client.

using (SqlConnection conn = new SqlConnection(connString)) 
{ 
    conn.Open(); 
    conn.FireInfoMessageEventOnUserErrors = true; 
    conn.InfoMessage += delegate(object sender, SqlInfoMessageEventArgs e) 
    { 
     txtMessage.Text += e.Message; 
    }; 
    ... 
} 

Voir: HOW TO: Return Errors and Warnings from a SQL Server Stored Procedure in ADO.NET

+0

Très belle technique! – RickNZ

Questions connexes