Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans le code managé, les exceptions sont levées lorsqu’une erreur se produit. Les méthodes et propriétés SMO ne signalent pas de réussite ou d’échec dans la valeur de retour. Au lieu de cela, les exceptions peuvent être interceptées et gérées par un gestionnaire d’exceptions.
Différentes classes d’exception existent dans le SMO. Des informations sur l’exception peuvent être extraites des propriétés d’exception telles que la Message propriété qui donne un message texte sur l’exception.
Les instructions de gestion des exceptions sont spécifiques au langage de programmation. Par exemple, dans Microsoft Visual Basic, il s’agit de l’instruction Catch .
Exceptions internes
Les exceptions peuvent être générales ou spécifiques. Les exceptions générales contiennent un ensemble d’exceptions spécifiques. Plusieurs Catch instructions peuvent être utilisées pour gérer les erreurs anticipées et laisser passer les erreurs restantes au code général de gestion des exceptions. Les exceptions se produisent souvent dans une séquence en cascade. Souvent, une exception SMO peut avoir été provoquée par une exception SQL. La façon de détecter cela consiste à utiliser la InnerException propriété successivement pour déterminer l’exception d’origine qui a provoqué l’exception finale de niveau supérieur.
Remarque
L’exception SQLException est déclarée dans l’espace de noms System.Data.SqlClient .
Le diagramme montre le flux d’exceptions par le biais des couches de l’application.
Exemple :
Pour utiliser un exemple de code fourni, vous devez choisir l’environnement de programmation, le modèle de programmation et le langage de programmation dans lequel créer votre application. Pour plus d’informations, consultez Créer un projet SMO Visual C# dans Visual Studio .NET ou créer un projet Visual Basic SMO dans Visual Studio .NET.
Capture d’une exception en Visual Basic
Cet exemple de code montre comment utiliser l’instruction Try...Catch...FinallyVisual Basic pour intercepter une exception SMO. Toutes les exceptions SMO ont le type SmoException et sont répertoriées dans la référence SMO. La séquence d’exceptions internes s’affiche pour afficher la racine de l’erreur. Pour plus d’informations, consultez la documentation Visual Basic .NET.
Capture d’une exception dans Visual C#
Cet exemple de code montre comment utiliser l’instruction Try...Catch...Finally Visual C# pour intercepter une exception SMO. Toutes les exceptions SMO ont le type SmoException et sont répertoriées dans la référence SMO. La séquence d’exceptions internes s’affiche pour afficher la racine de l’erreur. Pour plus d’informations, consultez la documentation Visual C#.
{
//This sample requires the Microsoft.SqlServer.Management.Smo.Agent namespace to be included.
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Define an Operator object variable by supplying the parent SQL Agent and the name arguments in the constructor.
//Note that the Operator type requires [] parenthesis to differentiate it from a Visual Basic key word.
op = new Operator(srv.JobServer, "Test_Operator");
op.Create();
//Start exception handling.
try {
//Create the operator again to cause an SMO exception.
OperatorCategory opx;
opx = new OperatorCategory(srv.JobServer, "Test_Operator");
opx.Create();
}
//Catch the SMO exception
catch (SmoException smoex) {
Console.WriteLine("This is an SMO Exception");
//Display the SMO exception message.
Console.WriteLine(smoex.Message);
//Display the sequence of non-SMO exceptions that caused the SMO exception.
Exception ex;
ex = smoex.InnerException;
while (!object.ReferenceEquals(ex.InnerException, (null))) {
Console.WriteLine(ex.InnerException.Message);
ex = ex.InnerException;
}
}
//Catch other non-SMO exceptions.
catch (Exception ex) {
Console.WriteLine("This is not an SMO exception.");
}
}