Uygulamaları geliştirip çalıştırdığınızda, farklı hata türleri ve hata terminolojisiyle karşılaşırsınız. Aşağıdaki listede önemli hata türleri ve terimler verilmiştir:
-
Derleme zamanı hataları
, kod derlemesi sırasında ActionScript derleyicisi tarafından verilir. Kodunuzdaki sözdizimi hataları uygulamanızın oluşturulmasını önlediğinde derleme zamanı hataları oluşur.
-
Çalışma zamanı hataları
, uygulamanızı derledikten sonra çalıştırdığınızda oluşur. Çalışma zamanı hataları, bir SWF dosyası Flash çalışma zamanında oynatılırken ortaya çıkan hataları temsil eder). Çoğu durumda çalışma zamanı hatalarını oluştuğunda işleyebilerek bunları kullanıcıya bildirebilir ve uygulamanızın devam etmesi için gerekli adımları uygulayabilirsiniz. Söz konusu hata, uzak bir web siteye bağlanılamama ya da verileri yükleyememe gibi kritik bir hataysa, uygulamanızın düzgün bir biçimde sonlandırılmasını sağlamak için hata işlemeyi kullanabilirsiniz.
-
Senkronize hatalar
, bir işlev çağrıldığında gerçekleşen çalışma zamanı hatalarıdır. Örneğin belirli bir yöntemi kullanmayı denediğinizde ve yönteme ilettiğiniz argüman geçersiz olduğunda Flash çalışma zamanı bir istisna atar. Hataların çoğu eşzamanlı—deyim çalıştırıldığında—oluşur ve denetim akışı hemen en uygun
catch
deyimine iletilir.
Örneğin, program dosyayı karşıya yüklemeden önce
browse()
yöntemi çağrılmadığından, aşağıdaki kod alıntısı bir çalışma zamanı hatası atar:
var fileRef:FileReference = new FileReference();
try
{
fileRef.upload(new URLRequest("http://www.yourdomain.com/fileupload.cfm"));
}
catch (error:IllegalOperationError)
{
trace(error);
// Error #2037: Functions called in incorrect sequence, or earlier
// call was unsuccessful.
}
Bu durumda, Flash Player dosya karşıya yükleme işleminden önce
browse()
yönteminin çağrılmadığını belirlediğinden, eşzamanlı olarak bir çalışma zamanı hatası atılır.
Eşzamanlı hata işleme hakkında ayrıntılı bilgi için, bkz.
Bir uygulamada eşzamanlı hataları işleme
.
-
Senkronize olmayan
hatalar
normal program akışı dışında görülen çalışma zamanı hatalarıdır. Bunlar olayları meydana getirir ve olay dinleyicileri bunları yakalar. Senkronizasyonsuz işlem, bir işlevin bir işlemi başlatıp işlemin tamamlanmasını beklemediği bir işlemdir. Uygulamanın ve kullanıcının bazı işlemleri denemesini beklemek için bir hata olayı dinleyicisi oluşturabilirsiniz. Böylece işlem başarısız olursa, hatayı olay dinleyicisi ile yakalayıp hata olayına yanıt verirsiniz. Daha sonra olay dinleyicisi hata olayına düzgün şekilde yanıt vermek için bir olay işleyicisi işlevini çağırır. Örneğin, olay işleyicisi, kullanıcıdan hatayı çözümlemesini isteyen bir iletişim kutusunu başlatabilir.
Daha önce sunulan dosya karşıya yükleme eşzamanlı hatası örneğini göz önünde bulundurun. Dosya karşıya yüklemesine başlamadan önce
browse()
yöntemini başarıyla çağırırsanız, Flash Player birçok olay gönderir. Örneğin, karşıya yükleme başladığında
open
olayı gönderilir. Dosya karşıya yükleme işlemi başarıyla tamamlandığında,
complete
olayı gönderilir. Olay işleme, senkronize olmadığı (yani belirli, bilinen ve önceden belirlenmiş zamanlarda gerçekleşmeyen) için, aşağıdaki kodun da gösterdiği üzere
addEventListener()
yöntemini kullanın:
var fileRef:FileReference = new FileReference();
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.OPEN, openHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
fileRef.browse();
function selectHandler(event:Event):void
{
trace("...select...");
var request:URLRequest = new URLRequest("http://www.yourdomain.com/fileupload.cfm");
request.method = URLRequestMethod.POST;
event.target.upload(request);
}
function openHandler(event:Event):void
{
trace("...open...");
}
function completeHandler(event:Event):void
{
trace("...complete...");
}
Eşzamansız hata işleme hakkında ayrıntılı bilgi almak için, bkz.
Hata olaylarını ve durumunu yanıtlama
.
-
Yakalanmamış istisnalar
, kendilerine yanıt verilmesi için karşılık gelen bir mantık olmadan atılan hatalardır (
catch
deyimi gibi). Uygulamanız bir hata atarsa ve hatayı işlemek için geçerli veya daha yüksek düzeyde uygun bir
catch
deyimi veya olay işleyicisi bulunamazsa, hata, yakalanmamış istisna olarak değerlendirilir.
Yakalanmamış bir hata ortaya çıktığında, çalışma zamanı
uncaughtError
olayı gönderir. Bu olay "global hata işleyici" olarak bilinir. Bu olay SWF’nin
LoaderInfo.uncaughtErrorEvents
özelliği ile sağlanan UncaughtErrorEvents nesnesi tarafından gönderilir.
uncaughtError
olayı için kayıtlı bir dinleyici yoksa, çalışma zamanı yakalanmamış hataları göz ardı eder ve hata SWF'yi kapatmadığı sürece uygulamayı yürütmeye çalışır.
uncaughtError
olayının gönderilmesine ek olarak Flash çalışma zamanının hata ayıklama programı, sürümleri geçerli komut dosyasını sonlandırarak yakalanmamış hatalara yanıt verir. Daha sonra, yakalanmamış hatayı
trace
ifadesi çıktısında görüntüler veya hata mesajını günlük dosyasına yazar. Eğer istisna nesnesi Hata sınıfı veya herhangi bir alt sınıfının örneğiyse, çıktıda yığın izleme bilgisi de görüntülenir. Flash çalışma zamanlarının hata ayıklayıcı sürümünün kullanılmasıyla ilgili daha fazla bilgi için, bkz.
Flash çalışma zamanlarının hata ayıklayıcı sürümleri
.
Not:
Bir uncaughtError olayını işlerken uncaughtError işleyicisinden bir hata olayı atılırsa olay işleyicisi bir kereden çok çağrılır. Bu sonsuz bir istisna döngüsüne neden olur. Bu tarz bir senaryodan kaçınmanız önerilir.