Bagikan melalui


Menangani Pengecualian SMO

Berlaku untuk:SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse AnalyticsSQL database di Microsoft Fabric

Dalam kode terkelola, pengecualian dilemparkan saat kesalahan terjadi. Metode dan properti SMO tidak melaporkan keberhasilan atau kegagalan dalam nilai pengembalian. Sebaliknya, pengecualian dapat ditangkap dan ditangani oleh handler pengecualian.

Kelas pengecualian yang berbeda ada di SMO. Informasi tentang pengecualian dapat diekstrak dari properti pengecualian seperti properti Pesan yang memberikan pesan teks tentang pengecualian.

Pernyataan penanganan pengecualian khusus untuk bahasa pemrograman. Misalnya, di Microsoft Visual Basic, ini adalah pernyataan Catch .

Pengecualian Dalam

Pengecualian bisa umum atau spesifik. Pengecualian umum berisi serangkaian pengecualian tertentu. Beberapa pernyataan Catch dapat digunakan untuk menangani kesalahan yang diantisipasi dan membiarkan kesalahan yang tersisa jatuh ke kode penanganan pengecualian umum. Pengecualian sering terjadi dalam urutan berjenjang. Sering kali, pengecualian SMO mungkin disebabkan oleh pengecualian SQL. Cara mendeteksi hal ini adalah dengan menggunakan properti InnerException secara berturut-turut untuk menentukan pengecualian asli yang menyebabkan pengecualian tingkat atas akhir.

Note

Pengecualian SQLException dideklarasikan dalam namespace System.Data.SqlClient .

Diagram yang memperlihatkan tingkat dari mana excp

Diagram menunjukkan alur pengecualian melalui lapisan aplikasi.

Example

Untuk menggunakan contoh kode apa pun yang disediakan, Anda harus memilih lingkungan pemrograman, templat pemrograman, dan bahasa pemrograman untuk membuat aplikasi Anda. Untuk informasi selengkapnya, lihat Membuat Proyek SMO Visual C# di Visual Studio .NET.

Menangkap Pengecualian di Visual Basic

Contoh kode ini menunjukkan cara menggunakan Coba... Menangkap... Akhirnyapernyataan Visual Basic untuk menangkap pengecualian SMO. Semua pengecualian SMO memiliki jenis SmoException, dan tercantum dalam referensi SMO. Urutan pengecualian dalam ditampilkan untuk menampilkan akar kesalahan. Untuk informasi selengkapnya, lihat dokumentasi Visual Basic .NET.

'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

Menangkap Pengecualian di Visual C#

Contoh kode ini menunjukkan cara menggunakan Coba... Menangkap... Akhirnya pernyataan Visual C# untuk menangkap pengecualian SMO. Semua pengecualian SMO memiliki jenis SmoException, dan tercantum dalam referensi SMO. Urutan pengecualian dalam ditampilkan untuk menampilkan akar kesalahan. Untuk informasi selengkapnya, lihat dokumentasi 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.");   
}   
}