Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL 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 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.");
}
}