Ang TRY … Ang CATCH statement sa Transact-SQL ay nakikita at pinangangasiwaan ang mga kondisyon ng error sa mga application ng database. Ang pahayag na ito ay ang pundasyon ng paghawak ng error sa SQL Server at isang mahalagang bahagi ng pagbuo ng magagaling na mga aplikasyon ng database. Subukan … Ang CATCH ay nalalapat sa SQL Server simula sa 2008, Azure SQL Database, Azure SQL Data Warehouse, at Parallel Data Warehouse.
Ipinakikilala ang TRY … CATCH
Subukan … Gumagana ang CATCH sa pamamagitan ng pagpapahintulot sa iyo na tukuyin ang dalawang pahayag ng Transact-SQL: isang nais mong "subukan" at isa pang gamitin upang "mahuli" ang anumang mga error na maaaring lumabas. Kapag nakatagpo ng SQL Server ang isang TRY … CATCH na pahayag, agad itong nagsasagawa ng pahayag na kasama sa TRY clause. Kung ang matagumpay na pagpapatupad ng TRY ay matagumpay, gumagalaw ang SQL Server. Gayunpaman, kung ang pahayag ng TRY ay bumubuo ng isang error, pinapatupad ng SQL Server ang pahayag ng CATCH upang mahawakan ang error nang maganda.
Ang batayang syntax ay tumatagal ng form na ito:
Magsimula ka pahayag block END TRYMagsimula kasql_statementEND CATCH ; Madaling maunawaan ang paggamit ng pahayag na ito sa pamamagitan ng isang halimbawa. Isipin na ikaw ang tagapangasiwa ng database ng human resources na naglalaman ng talahanayang nagngangalang "Mga empleyado," na naglalaman ng impormasyon tungkol sa bawat empleyado sa iyong samahan. Ang talahanayan na iyon ay gumagamit ng isang numerong numero ng empleyado ng empleyado bilang pangunahing susi. Maaari mong subukang gamitin ang pahayag sa ibaba upang magsingit ng bagong empleyado sa iyong database: INSERT INTO empleyado (id, first_name, last_name, extension)MGA VALUES (12497, 'Mike', 'Chapple', 4201)
Sa ilalim ng normal na pangyayari, ang pahayag na ito ay magdagdag ng hilera sa talahanayan ng mga empleyado. Gayunpaman, kung ang isang empleyado na may ID 12497 ay mayroon na sa database, ang pagpasok ng hilera ay lumalabag sa pangunahing hadlang at magresulta sa sumusunod na error: Msg 2627, Antas 14, Estado 1, Linya 1Paglabag sa pagpigil sa PRIMARY KEY 'PK_employee_id'. Hindi puwedeng magsingit ng duplicate key sa 'dbo.employees' ng object.Tinapos ang pahayag.
Habang ang error na ito ay nagbibigay sa iyo ng impormasyon na kailangan mo upang i-troubleshoot ang problema, may dalawang problema dito. Una, ang mensahe ay misteriyoso. Kabilang dito ang mga code ng error, mga numero ng linya at iba pang impormasyon na hindi nauunawaan sa karaniwang gumagamit. Pangalawa, at higit na mahalaga, nagiging sanhi ito ng pahayag upang i-abort at maaaring maging sanhi ng pag-crash ng application.Ang alternatibo ay upang balutin ang pahayag sa isang TRY … CATCH pahayag, tulad ng ipinapakita dito: Magsimula kaINSERT INTO empleyado (id, first_name, last_name, extension)MGA VALUES (12497, 'Mike', 'Chapple', 4201)END TRYMagsimula kaPRINT 'ERROR:' + ERROR_MESSAGE ();EXEC msdb.dbo.sp_send_dbmail@profile_name = 'Employee Mail',@recipients = '[email protected]',@body = 'Nagkaroon ng isang error na lumilikha ng isang bagong rekord ng empleyado.',@subject = 'Error sa Pag-duplicate ng Employee ID';END CATCH
Sa halimbawang ito, ang anumang mga error na nangyari ay iniulat sa parehong gumagamit na nagsasagawa ng command at ang [email protected] e-mail address. Ang error na ipinapakita sa gumagamit ay: Error: Paglabag sa PRIMARY KEY constraint na 'PK_employee_id'. Hindi puwedeng magsingit ng duplicate key sa 'dbo.employees' ng object.Na-queued ang mail.
Patuloy ang pagpapatupad ng application, na nagpapahintulot sa programmer na pangasiwaan ang error. Paggamit ng TRY … CATCH pahayag ay isang eleganteng paraan upang proactively tuklasin at hawakan ang mga error na nangyari sa SQL Server application database. Kung nais mong matuto nang higit pa tungkol sa Nakabalangkas na Wika ng Query, tingnan ang Panimula sa SQL. Subukan … Halimbawa ng CATCH
Pag-aaral ng Higit Pa