Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Baza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)
W kodzie zarządzanym wyjątki są zgłaszane w przypadku wystąpienia błędu. Metody i właściwości SMO nie zgłaszają powodzenia ani niepowodzenia w wartości zwracanej. Zamiast tego wyjątki mogą być przechwytywane i obsługiwane przez procedurę obsługi wyjątków.
W programie SMO istnieją różne klasy wyjątków. Informacje o wyjątku można wyodrębnić z właściwości wyjątku, takich jak właściwość Message , która wysyła wiadomość SMS o wyjątku.
Instrukcje obsługi wyjątków są specyficzne dla języka programowania. Na przykład w języku Microsoft Visual Basic jest to instrukcja Catch .
Inner Exceptions
Wyjątki mogą być ogólne lub specyficzne. Wyjątki ogólne zawierają zestaw określonych wyjątków. Kilka instrukcji Catch może służyć do obsługi przewidywanych błędów i pozwolić, aby pozostałe błędy przeszły do ogólnego kodu obsługi wyjątków. Wyjątki często występują w sekwencji kaskadowej. Często wyjątek SMO mógł być spowodowany wyjątkiem SQL. Sposobem wykrycia tego błędu jest użycie właściwości InnerException kolejno w celu określenia oryginalnego wyjątku, który spowodował końcowy wyjątek najwyższego poziomu.
Note
Wyjątek SQLException jest zadeklarowany w przestrzeni nazw System.Data.SqlClient .
Diagram przedstawia przepływ wyjątków przez warstwy aplikacji.
Example
Aby użyć dowolnego podanego przykładu kodu, musisz wybrać środowisko programowania, szablon programowania i język programowania, w którym ma zostać utworzona aplikacja. Aby uzyskać więcej informacji, zobacz Create a Visual C# SMO Project in Visual Studio .NET(Tworzenie projektu SMO w programie Visual Studio .NET).
Przechwytywanie wyjątku w Visual Basic
W tym przykładzie kodu pokazano, jak używać narzędzia Try... Łapać... Na koniecinstrukcja Języka Visual Basic, aby przechwycić wyjątek SMO. Wszystkie wyjątki SMO mają typ SmoException i są wymienione w dokumentacji SMO. Zostanie wyświetlona sekwencja wyjątków wewnętrznych w celu wyświetlenia katalogu głównego błędu. Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET języka Visual Basic.
'This sample requires the Microsoft.SqlServer.Management.Smo.Agent namespace is included.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
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.
Dim op As [Operator]
op = New [Operator](srv.JobServer, "Test_Operator")
op.Create()
'Start exception handling.
Try
'Create the operator again to cause an SMO exception.
Dim opx As OperatorCategory
opx = New OperatorCategory(srv.JobServer, "Test_Operator")
opx.Create()
'Catch the SMO exception
Catch smoex As SmoException
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.
Dim ex As Exception
ex = smoex.InnerException
Do While ex.InnerException IsNot (Nothing)
Console.WriteLine(ex.InnerException.Message)
ex = ex.InnerException
Loop
'Catch other non-SMO exceptions.
Catch ex As Exception
Console.WriteLine("This is not an SMO exception.")
End Try
Przechwytywanie wyjątku w programie Visual C#
W tym przykładzie kodu pokazano, jak używać narzędzia Try... Łapać... Na koniec instrukcja języka Visual C# w celu przechwycenia wyjątku SMO. Wszystkie wyjątki SMO mają typ SmoException i są wymienione w dokumentacji SMO. Zostanie wyświetlona sekwencja wyjątków wewnętrznych w celu wyświetlenia katalogu głównego błędu. Aby uzyskać więcej informacji, zobacz dokumentację języka 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.");
}
}