Skip to main content

Menggunakan TRY ... MENANGKAP untuk Menangani Kesalahan SQL Server

Python Tutorial For Beginners | Python Full Course From Scratch | Python Programming | Edureka (April 2025)

Python Tutorial For Beginners | Python Full Course From Scratch | Python Programming | Edureka (April 2025)
Anonim

Pernyataan TRY… CATCH dalam Transact-SQL mendeteksi dan menangani kondisi kesalahan dalam aplikasi basis data. 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 … MENANGKAP

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 bergerak. Namun, jika pernyataan TRY menghasilkan kesalahan, SQL Server mengeksekusi pernyataan CATCH untuk menangani kesalahan dengan anggun.

Sintaks dasar mengambil bentuk ini:

BEGIN COBA blok pernyataan AKHIR MENCOBABEGIN CATCHsql_statementAKHIR MENANGKAP ;

COBA … CATCH Contoh

Sangat mudah untuk memahami penggunaan pernyataan ini melalui sebuah 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)NILAI-NILAI (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, Negara 1, Jalur 1Pelanggaran kendala UTAMA UTAMA '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 lainnya yang tidak dapat dimengerti oleh pengguna rata-rata. Kedua, dan yang lebih penting, itu menyebabkan pernyataan untuk membatalkan dan dapat menyebabkan aplikasi crash.Alternatifnya adalah dengan membungkus pernyataan dalam pernyataan TRY… CATCH, seperti yang ditunjukkan di sini:

BEGIN COBAINSERT INTO employees (id, first_name, last_name, extension)NILAI-NILAI (12497, 'Mike', 'Chapple', 4201)AKHIR MENCOBABEGIN CATCHPRINT 'ERROR:' + ERROR_MESSAGE ();EXEC msdb.dbo.sp_send_dbmail@profile_name = 'Surat Karyawan',@recipients = '[email protected]',@body = 'Terjadi kesalahan saat membuat catatan karyawan baru.',@subject = 'Kesalahan Identitas Karyawan ID';AKHIR MENANGKAP

Dalam contoh ini, setiap kesalahan yang terjadi dilaporkan kepada pengguna yang mengeksekusi perintah dan alamat e-mail [email protected]. Kesalahan yang ditunjukkan kepada pengguna adalah:

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

Eksekusi aplikasi berlanjut secara normal, memungkinkan programmer untuk menangani kesalahan. 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, periksa Pengantar SQL.