A Step-By-Step Guide toUsing TRY ... MENANGKAP untuk Menangani Kesalahan SQL Server

Identifikasi kesalahan tanpa mengganggu eksekusi

Pernyataan TRY… CATCH dalam Transact- SQL mendeteksi dan menangani kondisi kesalahan dalam aplikasi database Anda. Pernyataan ini adalah landasan penanganan kesalahan SQL Server dan merupakan bagian penting dalam mengembangkan aplikasi database yang kuat. TRY ... CATCH berlaku untuk SQL Server dimulai dengan 2008, Azure SQL Database, Azure SQL Data Warehouse dan Parallel Data Warehouse.

Memperkenalkan TRY..CATCH

COBA ... CATCH bekerja dengan memungkinkan Anda untuk menetapkan dua pernyataan Transact-SQL: yang ingin "dicoba" dan yang lain digunakan untuk "menangkap" setiap kesalahan yang mungkin timbul. Ketika SQL Server bertemu dengan pernyataan TRY ... CATCH, segera menjalankan pernyataan yang termasuk dalam klausa TRY. Jika pernyataan TRY berhasil dieksekusi, SQL Server hanya bergerak. Namun, jika pernyataan TRY menghasilkan kesalahan, SQL Server mengeksekusi pernyataan CATCH untuk menangani kesalahan secara anggun.

Sintaks dasar mengambil bentuk ini:

BEGIN TRY {sql_statement | statement_block} END TRY BEGIN CATCH [{sql_statement | statement_block}] AKHIR MENANGKAP [; ]

COBA ... CATCH Contoh

Sangat mudah untuk memahami penggunaan pernyataan ini melalui penggunaan contoh. Bayangkan bahwa Anda adalah administrator dari database sumber daya manusia yang berisi tabel bernama "Karyawan," yang berisi informasi tentang masing-masing karyawan di organisasi Anda. Tabel tersebut menggunakan nomor ID karyawan bilangan bulat sebagai kunci utama . Anda mungkin mencoba menggunakan pernyataan di bawah ini untuk memasukkan karyawan baru ke dalam database Anda:

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

Dalam keadaan normal, pernyataan ini akan menambahkan baris ke tabel Karyawan. Namun, jika karyawan dengan ID 12497 sudah ada dalam database, memasukkan baris akan melanggar batasan kunci utama dan menghasilkan kesalahan berikut:

Msg 2627, Level 14, State 1, Line 1 Pelanggaran kendala UTAMA KUNCI 'PK_employee_id'. Tidak dapat memasukkan kunci duplikat dalam objek 'dbo.employees'. Pernyataan itu telah dihentikan.

Sementara kesalahan ini memberi Anda informasi yang Anda butuhkan untuk memecahkan masalah, ada dua masalah dengannya. Pertama, pesan itu bersifat rahasia. Ini termasuk kode kesalahan, nomor baris dan informasi lain yang tidak dapat dipahami oleh pengguna rata-rata. Kedua, dan yang lebih penting, itu menyebabkan pernyataan untuk membatalkan dan dapat menyebabkan aplikasi crash.

Alternatifnya adalah membungkus pernyataan dalam pernyataan TRY… CATCH, seperti yang ditunjukkan di bawah ini:

BEGIN TRY INSERT INTO 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 = 'Surat Karyawan', @recipients = 'hr@foo.com', @body = 'Terjadi kesalahan saat membuat catatan karyawan baru.', @subject = 'ID Karyawan Duplikasi Kesalahan'; AKHIR MENANGKAP

Dalam contoh ini, setiap kesalahan yang terjadi dilaporkan kepada pengguna yang mengeksekusi perintah dan alamat e-mail hr@foo.com. Kesalahan yang ditunjukkan kepada pengguna muncul di bawah ini:

Kesalahan: Pelanggaran kendala UTAMA KUNCI 'PK_employee_id'. Tidak dapat memasukkan kunci duplikat dalam objek 'dbo.employees'. Antrean email.

Yang paling penting, eksekusi aplikasi berlanjut secara normal, memungkinkan programmer untuk menangani kesalahan secara anggun. Penggunaan pernyataan TRY ... CATCH adalah cara elegan untuk mendeteksi dan menangani kesalahan secara proaktif yang terjadi di aplikasi basis data SQL Server.

Belajar Lebih Banyak

Jika Anda ingin mempelajari lebih lanjut tentang Structured Query Language, baca Pengantar SQL .