Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nel codice gestito, le eccezioni vengono generate quando si verifica un errore. I metodi e le proprietà SMO non segnalano l'esito positivo o negativo nel valore restituito. Le eccezioni possono invece essere rilevate e gestite da un gestore eccezioni.
Esistono classi di eccezioni diverse in SMO. Le informazioni sull'eccezione possono essere estratte dalle proprietà dell'eccezione, ad esempio la Message proprietà che fornisce un messaggio di testo sull'eccezione.
Le istruzioni di gestione delle eccezioni sono specifiche del linguaggio di programmazione. Ad esempio, in Microsoft Visual Basic è l'istruzione Catch .
Eccezioni interne
Le eccezioni possono essere generali o specifiche. Le eccezioni generali contengono un set di eccezioni specifiche. È possibile usare diverse Catch istruzioni per gestire gli errori previsti e consentire l'esecuzione di errori rimanenti nel codice generale di gestione delle eccezioni. Le eccezioni si verificano spesso in una sequenza a catena. Spesso, un'eccezione SMO potrebbe essere stata causata da un'eccezione SQL. Il modo per rilevare questa operazione consiste nell'usare la InnerException proprietà in modo successivo per determinare l'eccezione originale che ha causato l'eccezione finale di primo livello.
Annotazioni
L'eccezione SQLException viene dichiarata nello spazio dei nomi System.Data.SqlClient .
Il diagramma mostra il flusso delle eccezioni attraverso i livelli dell'applicazione.
Esempio
Per usare qualsiasi esempio di codice fornito, è necessario scegliere l'ambiente di programmazione, il modello di programmazione e il linguaggio di programmazione in cui creare l'applicazione. Per altre informazioni, vedere Creare un progetto SMO di Visual C# in Visual Studio .NET o Creare un progetto SMO di Visual Basic in Visual Studio .NET.
Rilevamento di un'eccezione in Visual Basic
In questo esempio di codice viene illustrato come utilizzare l'istruzione Visual Basic per intercettare un'eccezione Try...Catch...FinallySMO. Tutte le eccezioni SMO hanno il tipo SmoException e sono elencate nel riferimento SMO. Viene visualizzata la sequenza di eccezioni interne per visualizzare la radice dell'errore. Per altre informazioni, vedere la documentazione di Visual Basic .NET.
Rilevamento di un'eccezione in Visual C#
Questo esempio di codice illustra come usare l'istruzione Visual C# per intercettare un'eccezione Try...Catch...Finally SMO. Tutte le eccezioni SMO hanno il tipo SmoException e sono elencate nel riferimento SMO. Viene visualizzata la sequenza di eccezioni interne per visualizzare la radice dell'errore. Per altre informazioni, vedere la documentazione di 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.");
}
}