Error sınıflarını karşılaştırma

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

ActionScript, önceden tanımlı birçok Error sınıfı sağlar. Ancak, kendi kodunuzda da aynı Error sınıflarını kullanabilirsiniz. ActionScript 3.0'da iki ana Error sınıfı türü vardır: ActionScript çekirdek Error sınıfları ve flash.error paketi Error sınıfları. flash.error paketinde, ActionScript 3.0 uygulama geliştirmesi ve hata ayıklamasına yardımcı olmak üzere sunulan ek sınıflar bulunur.

En önemli hata sınıfları

En önemli hata sınıfları arasında Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError ve VerifyError sınıfları bulunur. Bu sınıfların her biri üst düzey ad alanında bulunur.

Sınıf adı

Açıklama

Notlar

Error

Error sınıfı, istisnaları fırlatmak için kullanılır ve ECMAScript'te tanımlanmış diğer istisna sınıfları için temel sınıftır: EvalError, RangeError, ReferenceError, SyntaxError, TypeError ve URIError.

Error sınıfı, tüm çalışma zamanı hataları için temel sınıf görevi görür ve tüm özel hata sınıfları için önerilen temel sınıftır.

ArgumentError

ArgumentError sınıfı, bir işlev çağrısı sırasında sağlanan parametre değerleri, o işlev için tanımlanmış parametrelerle eşleşmediğinde gerçekleşen bir hatayı temsil eder.

Argüman hatalarının bazı örnekleri arasında şunlar yer alır:

  • Bir yönteme çok az veya çok fazla argüman sağlanması.

  • Bir argümanın bir numaralandırma üyesi olmasının beklenmesi ancak olmaması.

EvalError

Function sınıfının yapıcısına herhangi bir parametre iletilirse veya kullanıcı kodu eval() işlevini çağırırsa bir EvalError istisnası atılır.

ActionScript 3.0'da eval() işlevi desteği kaldırılmış olup bu işlevi kullanma girişimleri de bir hatanın verilmesine yol açar.

Önceki Flash Player sürümleri, ada göre değişkenlere, özelliklere, nesnelere veya film kliplerine erişmek için eval() işlevini kullanırdı.

RangeError

Sayısal bir değer, kabul edilebilir aralığın dışında kalırsa bir RangeError istisnası fırlatılır.

Örneğin, bir gecikme negatif olunca veya sonlu olmayınca Timer sınıfı tarafından bir RangeError verilir. Ayrıca geçersiz derinlikte bir görüntüleme nesnesini eklemeyi denediğinizde de bir RangeError atılabilirdi.

ReferenceError

Mühürlü (dinamik olmayan) bir nesnede tanımsız bir özelliğe başvurulduğunda ReferenceError istisnası atılır. ActionScript 3.0'dan önceki ActionScript derleyici sürümleri, undefined bir özelliğe erişilmeye çalışıldığında bir hata atmazdı. Ancak ActionScript 3.0, bu koşulda ReferenceError istisnasını atar.

Tanımsız değişkenlerin istisnaları, olası hataları işaret ederek yazılım kalitesini yükseltmenize yardımcı olur. Ancak, değişkenlerinizi başlatmak zorunda olmaya alışkın değilseniz bu yeni ActionScript davranışı, kodlama alışkanlıklarınızda bazı değişiklikler yapmanızı gerektirebilir.

SecurityError

Bir güvenlik ihlali gerçekleşip erişim reddedildiğinde SecurityError istisnası atılır.

Güvenlik hatalarının bazı örnekleri arasında şunlar yer alır:

  • Sanal güvenlik alanı sınırından yetkisiz bir özellik erişimi veya yöntem çağrısı yapılması.

  • Sanal güvenlik alanının izin vermediği bir URL'ye erişim girişiminde bulunulması.

  • Bir bağlantı noktasına soket bağlantısı yapılmaya çalışılmış ancak gerekli soket ilke dosyası bulunmamıştır.

  • Kullanıcının kamerasına veya mikrofonuna bir girişimde bulunuldu ve kullanıcı cihaza erişim yapılmasını reddetti.

SyntaxError

ActionScript kodunuzda bir ayrıştırma hatası oluştuğunda SyntaxError istisnası atılır.

SyntaxError hatası şu koşullarda atılabilir:

  • RegEp sınıfı geçersiz bir düzenli ifade ayrıştırdığında ActionScript, SyntaxError istisnaları fırlatır.

  • XMLDocument sınıfı geçersiz bir XML ayrıştırdığında ActionScript, SyntaxError fırlatır.

TypeError

Bir işlenenin gerçek türü beklenen türden farklı olduğunda TypeError istisnası atılır.

TypeError hatası şu koşullarda atılabilir:

  • Bir işlevin veya yöntemin gerçek parametresi, biçimsel parametre türüne zorlanamadığında.

  • Bir değişkene bir değer atandığında ve bu değer değişkenin türüne zorlanamadığında.

  • is veya instanceof operatörünün sağ tarafı geçerli bir tür olmadığında.

  • super anahtar sözcüğü kuraldışı olarak kullanıldığında.

  • Özellik arama birden çok bağlamaya yol açtığından belirsiz olduğunda.

  • Uyumsuz bir nesnede bir yöntem çağrılır. Örneğin, RegExp sınıfındaki bir yöntem genel bir nesneye "eklenip" sonra çağrıldığında bir TypeError istisnası fırlatılır.

URIError

Genel URI işleme işlevlerinden biri, tanımına uymayacak şekilde kullanıldığında URIError istisnası atılır.

URIError hatası şu koşullarda atılabilir:

Geçerli bir URI bekleyen Flash Player API'si işlevi için, Socket.connect() gibi geçersiz bir URI belirtildiğinde.

VerifyError

Yanlış biçimlendirilmiş veya bozuk bir SWF dosyasıyla karşılaşıldığında VerifyError istisnası atılır.

Bir SWF dosyası başka bir SWF dosyasını yüklediğinde, üst SWF, yüklenen SWF tarafından oluşturulan bir VerifyError hatasını yakalayabilir.

flash.error paketi Error sınıfları

flash.error paketi, Flash çalışma zamanı API'sinin parçası olarak değerlendirilen Error sınıflarını içerir. Açıklaması yapılan Error sınıflarının tersine, flash.error paketi, Flash çalışma zamanına özgü hata olaylarıyla iletişim kurar (Flash Player ve Adobe AIR gibi).

Sınıf adı

Açıklama

Notlar

EOFError

Kullanılabilir verilerin sonunun ötesini okumaya çalıştığınızda bir EOFError istisnası atılır.

Örneğin, IDataInput arabiriminde okuma yöntemlerinden biri çağrıldığında ve okuma isteğini karşılamak için yeterli veri olmadığında bir EOFError atılır.

IllegalOperationError

Bir yöntem uygulanmadığında veya uygulama geçerli kullanımı kapsamadığında, bir IllegalOperationError istisnası atılır.

Kuraldışı işlem hatası istisnalarının örnekleri arasında şunlar yer alır:

  • DisplayObjectContainer gibi bir temel sınıfın, Sahne Alanı'nın destekleyemeyeceği kadar çok işlevsellik sağlaması. Örneğin, Sahne alanı'nda ( stage.mask öğesini kullanarak) bir maske almayı veya ayarlamayı denerseniz, Flash çalışma zamanı, “Stage sınıfı bu özellik veya yöntemi uygulamıyor” mesajıyla birlikte IllegalOperationError fırlatır.

  • Bir alt sınıfın gerektirmediği ve desteklemek istemediği bir yöntemi miras alması.

  • Erişilebilirlik desteği olmadan Flash Player derlendiğinde belirli yöntemlerin çağrılması.

  • Flash Player uygulamasının çalışma zamanı sürümünden yalnızca geliştirme özelliklerinin çağrılması.

  • Zaman çizelgesine yerleştirilmiş bir nesnenin adını ayarlamaya çalışmanız.

IOError

Bir G/Ç istisnası gerçekleştiğinde IOError istisnası atılır.

Örneğin, bağlanmamış veya bağlantısı kesilmiş bir sokette okuma-yazma işlemi girişiminde bulunulduğunda bu hatayı alırsınız.

MemoryError

Bellek ayırma isteği başarısız olduğunda bir MemoryError istisnası atılır.

Varsayılan olarak, ActionScript Virtual Machine 2, bir ActionScript programının ayırabileceği bellek miktarına bir sınırlama getirmez. Masaüstü bir sistemde bellek tahsisi hatalarına az rastlanır. Sistem bir işlem için gerekli belleği ayıramadığında bir hata atıldığını görürsünüz. Bu nedenle masaüstü bir bilgisayarda ayırma isteği aşırı yüksek miktarda olmadığı sürece bu istisna çok nadir fırlatılır; örneğin 32-bit Microsoft ® Windows® programı yalnızca adres alanının 2 GB'ına erişebildiğinden 3 milyar bayt isteği olanaksızdır.

ScriptTimeoutError

15 saniyelik komut dosyası zaman aşımı aralığına ulaşıldığında bir ScriptTimeoutError istisnası atılır. ScriptTimeoutError istisnasını yakalayarak komut dosyası zaman aşımını daha düzgün şekilde işleyebilirsiniz. Herhangi bir istisna işleyicisi yoksa, yakalanmayan istisna işleyicisi bir hata mesajı içeren bir iletişim kutusunu görüntüleyecektir.

Kötü amaçlı bir geliştiricinin istisnayı yakalayıp sonsuz döngüde kalmasını önlemek için, yalnızca belirli bir komut dosyasında atılan birinci ScriptTimeoutError istisnası yakalanabilir. Sonraki bir ScriptTimeoutError istisnası, kodunuz tarafından yakalanamaz; hemen yakalanmamış istisna işleyicisine gider.

StackOverflowError

Komut dosyası için kullanılabilir olan yığın tükendiğinde StackOverflowError istisnası atılır.

StackOverflowError istisnası, sonsuz bir yineleme oluştuğunu belirtebilir.