A Step-By-Step Guide toUsing TRY ... CATCH to Handle SQL Server Errors

Ngenali kasalahan tanpa ngganggu eksekusi

TRY ... Statement CATCH ing Transact- SQL ndeteksi lan nangani kondisi kesalahan ing aplikasi basis data. Iki statement minangka cornerstone SQL Server nangani kesalahan lan minangka bagean penting saka ngembangaken aplikasi database kuwat. Coba ... CITES ditrapake kanggo SQL Server wiwit karo 2008, Azure SQL Database, Azure SQL Data Warehouse lan Parallel Data Warehouse.

Ngenalake TRY..CATCH

TRY ... CATCH pancen digunakake dening ngidini sampeyan nemtokake loro transact-SQL statements: sing pengin sampeyan "nyoba" lan liya sing digunakake kanggo "nyekel" kesalahan sing bisa muncul. Nalika SQL Server nemokake TRY ... statement CATCH, langsung ngeksekusi statement kasebut ing klausa TRY. Yen statement TRY executes kasil, SQL Server mung gerakane ing. Nanging, yen statement TRY njenengi kesalahan, SQL Server nganakake statement CATCH kanggo ngatasi kesalahan.

Sintaks dasar njupuk formulir iki:

BEGIN TRY {sql_statement | statement_block} DITUWULAN MENGGUNAKAN CATCH [{sql_statement | statement_block}] END CATCH [; ]

Coba ... Contoh CATCH

Paling gampang mangertos panggunaan pernyataan kasebut kanthi nggunakake conto. Mbayangno manawa sampeyan minangka administrator database sumber daya manusia sing ngemot tabel sing jenenge "Karyawan," sing ngemot informasi babagan saben karyawan ing organisasi sampeyan. Tabel iki migunakake nomer ID pegawe integer minangka tombol utami . Sampeyan bisa uga nyoba nggunakake statement ing ngisor iki kanggo masang pegawe anyar menyang database:

INSERT INTO karyawan (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Ing kahanan normal, pernyataan iki bakal nambah baris menyang tabel Karyawan. Nanging, menawa karyawan karo ID 12497 wis ana ing basis data, nglebokake baris bakal nglanggar kendala utama lan ngakibatake kesalahan ing ngisor iki:

Msg 2627, Tingkat 14, Negara 1, Pelanggaran 1 Jalur PRIMARY KEY 'PK_employee_id'. Ora bisa nyisipake tombol duplikat ing obyek 'dbo.employees'. Pernyataan wis ditundha.

Nalika kesalahan iki menehi sampeyan informasi sing kudu dilakoni masalah, ana rong masalah. Kaping pisanan, pesen iku misterius. Iki kalebu kode kesalahan, nomer baris lan informasi liyane sing ora bisa dimangerteni kanggo pangguna rata-rata. Kapindho, lan liyane sing penting, iku bakal nyebabake pernyataan kasebut bisa dibubarake lan bisa nyebabake kacilakan aplikasi.

Alternatif kanggo mbungkus pernyataan ing TRY ... Keterangan CATCH, minangka ditampilake ing ngisor iki:

Miwiti nyoba INSERT marang karyawan (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) END TRY BEGIN CATCH PRINT 'Error:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Employee Mail', @recipients = 'hr@foo.com', @body = 'Kesalahan nyebabake nggawe rekaman pegawe anyar.', @ Subject = 'Kesalahan duplikat ID pegawai'; TANGGUNG JAWAB

Ing conto iki, kasalahan sing kedadean dilapurake marang pangguna sing nglakoni perintah kasebut lan alamat e-mail hr@foo.com. Kesalahan sing ditampilake ing pangguna katon ing ngisor iki:

Kesalahan: Pelanggaran PRIMARY KEY constraint 'PK_employee_id'. Ora bisa nyisipake tombol duplikat ing obyek 'dbo.employees'. Mail queued.

Paling penting, eksekusi aplikasi tetep normal, saéngga programmer bisa ngatasi kesalahan. Gunakake TRY ... Keterangan CATCH minangka cara elegan kanggo proaktif mendeteksi lan nangani kasalahan sing dumadi ing aplikasi database SQL Server.

Learning More

Yen sampeyan pengin sinau luwih lengkap babagan Structured Query Language, maca Pambuka kanggo SQL .