Cftry tagı, cfcatch tagı ile birlikte kullanılır. Kullanımında birden fazla cfcatch tagı içerebilir. Cftry tagı, coldfusion sayfası içinde yazdığımız bir kodun, yanlış olabilmesi durumunda istisna fırlatır. Yani ;
<cfset a=#form.number1#>
<cfset b=#form.number2#>
<cfset c=a/b>
Kodları, formdaki textboxlara sıfırdan farklı bir sayı girilmesi ya da birinci sayının sıfır olması durumunda hata vermez, doğru çalışır. Ancak, ikinci sayı için sıfır girilirse, program bu noktada kırılır ve hata verir.
Biz, program bu noktada kırılıp, hata vermesin diye bu kod bloğunu cftry içine alabiliriz. Ama mutlaka ardından da cfcatch kullanmak zorundayız. Çünkü, cftry ile programın kırılması önlenirken, aynı zamanda bu kırılma yerine gerçekleşecek olayı da tanımlamalıyız. Yani cftry ile fırlattığımız istisnayı, cfcatch ile yakalayabiliriz.
Cftry ile istisna fırlatıldığı anda, Cfcatch içinde yazdığımız devreye girer.
Bu kod dizilimi aşağıdaki gibi olabilir:
<cftry>
<cfset a=#form.number1#>
<cfset b=#form.number2#>
<cfset c=a/b>
<cfcatch>
<cfoutput>Sıfıra Bölme Hatası</cfoutput>
</cfcatch>
</cftry>
Yukarıdaki kodlar, cftry – cfcatch kullanımının en basit örneği.
Cfcatch tagının bir de type parametresi var. Kullanımı programcıya bağlı. Bu type değeri, fırlatılan istisnanın tipini belirtiyor.
Application : uygulamaya ilişkin istisnaları yakalar.
Database : veritabanı istisnalarını yakalar.
Template : coldfusion sayfası ile ilgili istisnaları yakalar.
Security : güvenlik ile ilgili oluşan istisnaları yakalar.
Object : nesnelerle ilgili istisnaları yakalar.
Missinginclude: sistemle bağlantılı olarak çalışan eksik dosyalara ilişkin istisnaları yakalar.
Expression : sayfadaki yanlış kullanmlarla ilgili istisnaları yakalar.
Lock : sistem kilitlenmeleriyle ilgili istisnaları yakalar.
Custom_type : Bir cfthrow tagı tanımlanarak, bu tag içinde belirtilen özel istisnaları yakalar.
Searchengine : arama motoru ile ilgili istisnaları yakalar, aramanın doğruluğunu kontrol eder.
Any : bütün tiplerdeki istisnaları yakalar.
Bu tip özelliği, fırlatılan istisnanın hangi tipte olduğu ile ilgili olarak belirtilen bir özellik. Yani eğer, cftry içinde karşılaşılan hata, veritabanındaki herhangi bir durumla ilgili ise, cfcatch içinde tip olarak database belirtmemiz gerekiyor. Ya da cftry içinde karşılaşılan hata, eksik dosya bulunup bulunmaması ile ilgili ise, cfcatch içinde tip olarak missingInclude belirtmemiz gerekiyor.
Eğer type=”any” ise, herhangi bir yerden istisna yakalayabilir. Bu istisna nesne ile ilgili de olabilir, veritabanı ile ilgili de olabilir.
Örneğin;
<cfif ISDEFINED(FORM.btnSubmit)>
<cftry>
<cfquery name=”getUserName” datasource=”DSNdatasource”>
SELECT UserName
FROM tlbCustomer
WHERE UserID = 1;
</cfquery>
<cfset name=”myuser” value=”getUserName.UserName”>
<cfcatch type=”database”>
<!--- Eğer sorgu geçersiz ise, myuser değişkeninin değeri “GEÇERSİZ SORGULAMA” olsun. --->
<cfset name=”myuser” value=” GEÇERSİZ SORGULAMA”>
</cfcatch>
</cftry>
</cfif>
<cfoutput> #myuser# </cfoutput>
Eğer, yukarıdaki sql sorgusu geçerli ya da geçersiz, bir sonuç üretemezse, cftry ve cfcatch kodları kullanıldığı için program istisna fırlatır. İstisna fırlatıldığında, program akışı cfcatch kısmına geçer. Ve cfcatch kodları çalışmaya başlar.
Yukarıdaki kod dizilimi de GEÇERSİZ SORGULAMA yazısını ekranda görüntüler. Kullanıcı çözümleyemediği bir hata ile değil, anlayabileceği ve çözümleyebileceği bir hata ile karşılaşmış olur.
Cfcatch tagı içinde, type özelliğinde custom_tag tipinin kullanılabilmesi için, bu tipin özel olarak tanımlanması gerekiyor.
Bu tanımlama cfthrow içinde yapılıyor.
custom_type tanımlama :
<cfthrow type = "MyApp.FirstException.InvalidAccount">
Cfcatch içinde de cfthrow içinde belirtildiği gibi kullanılır.
<cfcatch type = "MyApp. FirstException.InvalidAccount">
Eğer, cfcatch içindeki istisnanın tipini #cfcatch.type# şeklinde öğrenebiliriz.
Fırlatılan istisnanın ilgili mesajını #cfcatch.message# şeklinde kullanabiliriz.
Cfcatch ile kullanılan diğer yapılar aşağıda verilmiştir.
- cfcatch .detail -> istisna fırlatan tagı verir.
- cfcatch .tagContext -> istisna fırlatan tagı, etiketini, ismini, bu etiketlerin bulunduğu dosyanın yolunu ve tam adresini verir.
#cfcatch.type# ve #cfcatch.message# gibi, cfcatch e ait verileri elde etmek için kullandığımız yapıları, cfoutput ile ekrana basabiliriz. Cfdump kullanırsak, bu verilerin değerleri görüntülenmeyecektir.
Cftry – cfcatch kod bloğu,
- Hataları kurtarır, uyarı mesajları olmadan işleme devam etmemizi sağlar.
- Ya da kendi özelleştirdiğimiz uyarıları kullanarak işleme devam etmemizi sağlar.
1 yorum - Gönderen : Ayşegül Sümeyra Karakoç (10:43 AM) - Kategori : Coldfusion