Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No código gerenciado, as exceções são geradas quando ocorre um erro. Métodos e propriedades de SMO não relatam êxito ou falha no valor retornado. Em vez disso, as exceções podem ser capturadas e tratadas por um manipulador de exceção.
Diferentes classes de exceção existem no SMO. Informações sobre a exceção podem ser extraídas das propriedades de exceção, como a Message propriedade que fornece uma mensagem de texto sobre a exceção.
As instruções de tratamento de exceção são específicas para a linguagem de programação. Por exemplo, no Microsoft Visual Basic é a instrução Catch .
Exceções internas
As exceções podem ser gerais ou específicas. Exceções gerais contêm um conjunto de exceções específicas. Várias Catch instruções podem ser usadas para lidar com erros previstos e permitir que os erros restantes caiam no código geral de tratamento de exceções. Exceções geralmente ocorrem em uma sequência em cascata. Com frequência, uma exceção de SMO pode ter sido causada por uma exceção sql. A maneira de detectar isso é usar a InnerException propriedade sucessivamente para determinar a exceção original que causou a exceção final de nível superior.
Observação
A SQLException exceção é declarada no namespace System.Data.SqlClient .
O diagrama mostra o fluxo de exceções por meio das camadas do aplicativo.
Exemplo
Para usar qualquer exemplo de código fornecido, você precisará escolher o ambiente de programação, o modelo de programação e a linguagem de programação na qual criar seu aplicativo. Para obter mais informações, consulte Criar um projeto SMO do Visual C# no Visual Studio .NET ou criar um projeto de SMO do Visual Basic no Visual Studio .NET.
Capturando uma exceção no Visual Basic
Este exemplo de código mostra como usar a Try...Catch...Finallyinstrução Visual Basic para capturar uma exceção de SMO. Todas as exceções de SMO têm o tipo SmoException e são listadas na referência de SMO. A sequência de exceções internas é exibida para mostrar a raiz do erro. Para obter mais informações, consulte a documentação do .NET do Visual Basic.
Capturando uma exceção no Visual C#
Este exemplo de código mostra como usar a Try...Catch...Finally instrução Visual C# para capturar uma exceção de SMO. Todas as exceções de SMO têm o tipo SmoException e são listadas na referência de SMO. A sequência de exceções internas é exibida para mostrar a raiz do erro. Para obter mais informações, consulte a documentação do 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.");
}
}