Video: Dart Streams - Flutter in Focus 2025
Apabila cuba menentukan sumber ralat SQL dan SQLSTATE menunjukkan keadaan pengecualian dengan memegang nilai selain 00000, 00001, atau 00002, anda mungkin ingin menangani situasi dalam satu dari cara berikut:
-
Kawalan kembali ke prosedur induk yang memanggil subproyek yang menimbulkan pengecualian.
-
Gunakan klausa WHENEVER untuk cawangan untuk rutin pengendalian pengecualian atau melakukan beberapa tindakan lain.
-
Mengendalikan pengecualian di tempat dengan pernyataan senyawa SQL. Pernyataan SQL kompaun terdiri daripada satu atau lebih pernyataan SQL yang mudah, diapit antara BEGIN dan END kata kunci.
Berikut adalah contoh pengendali pengecualian pernyataan kompaun:
BEGIN DECLARE ValueOutOfRange EXCEPTION FOR SQLSTATE'73003 '; REPLACE INTO MAKANAN (Kalori) VALUES (: cal); ValueOutOfRange SIGNAL; MESSAGE 'Proses nilai kalori baru. 'PENGECUALIAN DENGAN ValueOutOfRange THEN MESSAGE' Menangani ralat jarak kalori '; WHEN OTHERS THEN RESIGNAL; END
Dengan satu atau lebih kenyataan PERMOHONAN, anda boleh memberi nama kepada nilai SQLSTATE yang spesifik yang mungkin anda harapkan. Kenyataan INSERT adalah salah satu yang mungkin menyebabkan pengecualian berlaku. Jika nilai: kal melebihi nilai maksimum untuk item data SMALLINT, SQLSTATE ditetapkan kepada "73003". Pernyataan SIGNAL menandakan keadaan pengecualian. Ia membersihkan bahagian diagnostik teratas.
Ia menetapkan medan diagnostik RETURNED_SQLSTATE ke SQLSTATE untuk pengecualian yang dinamakan. Jika tiada pengecualian telah berlaku, siri pernyataan yang diwakili oleh pernyataan MESSAGE 'Proses pernyataan nilai kalori baru' dilaksanakan. Walau bagaimanapun, sekiranya pengecualian telah berlaku, siri kenyataan itu dilangkau, dan pernyataan PENGECUALIAN dijalankan.
Sekiranya pengecualian adalah pengecualian NilaiOutOfRange, maka satu siri kenyataan yang diwakili oleh kenyataan 'Menangani ralat ralat kalori' dilaksanakan. Kenyataan RESIGNAL dilaksanakan jika pengecualian bukan pengecualian NilaiOutOfRange.
RESIGNAL semata-mata lulus kawalan pelaksanaan kepada prosedur ibu bapa panggilan. Prosedur itu mungkin mempunyai kod pengendalian kesilapan tambahan untuk menangani pengecualian selain dari ralat nilai keluar dari jangkauan.
