Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В управляемом коде исключения возникают при возникновении ошибки. Методы и свойства SMO не сообщают об успешном выполнении или сбое в возвращаемом значении. Вместо этого исключения можно поймать и обрабатывать обработчиком исключений.
В SMO существуют различные классы исключений. Сведения об исключении можно извлечь из свойств исключения, таких как Message
свойство, которое дает текстовое сообщение об исключении.
Инструкции обработки исключений относятся к языку программирования. Например, в Microsoft Visual Basic это Catch
инструкция.
Внутренние исключения
Исключения могут быть общими или конкретными. Общие исключения содержат набор определенных исключений. Для обработки ожидаемых ошибок можно использовать несколько Catch
инструкций и позволить оставшимся ошибкам пройти до общего кода обработки исключений. Исключения часто происходят в каскадной последовательности. Часто исключение SMO может быть вызвано исключением SQL. Способ обнаружения этого свойства заключается в последовательном использовании InnerException
свойства для определения исходного исключения, вызвавшего окончательное исключение верхнего уровня.
Замечание
Исключение SQLException
объявляется в пространстве имен System.Data.SqlClient .
На схеме показан поток исключений через слои приложения.
Пример
Чтобы использовать любой приведенный пример кода, необходимо выбрать среду программирования, шаблон программирования и язык программирования, в котором будет создано приложение. Дополнительные сведения см. в статье о создании проекта SMO Visual C# в Visual Studio .NET или создании проекта SMO Visual Basic в Visual Studio .NET.
Перехват исключения в Visual Basic
В этом примере кода показано, как использовать Try...Catch...Finally
инструкцию Visual Basic для перехвата исключения SMO. Все исключения SMO имеют тип SmoException и перечислены в справочнике по SMO. Последовательность внутренних исключений отображается для отображения корня ошибки. Дополнительные сведения см. в документации по .NET Visual Basic.
Перехват исключения в Visual C#
В этом примере кода показано, как использовать инструкцию Try...Catch...Finally
Visual C# для перехвата исключения SMO. Все исключения SMO имеют тип SmoException и перечислены в справочнике по SMO. Последовательность внутренних исключений отображается для отображения корня ошибки. Дополнительные сведения см. в документации по 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.");
}
}