Hata türleri

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

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 olmayanhatalar, çalışma zamanı sırasında çeşitli noktalarda ortaya çıkan çalışma zamanı hatalarıdır. Olaylar oluştururlar ve olay dinleyicileri onları 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. İstisnai nesne, Hata sınıfının bir örneği veya alt sınıflarından biriyse getStackTrace() yöntemi çağırılır. İzleme bilgisi yığını, izleme ifadesi çıktısında veya bir günlük dosyasında 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.