ActionScript 3.0'da hata işleme

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

Uygulamaların çoğu hata işleme mantığı oluşturulmadan çalıştırılabildiğinden, geliştiriciler kendi uygulamalarında hata işleme oluşturulmasını erteleyebilir. Ancak, hata işleme olmazsa bir şeyler beklendiği gibi çalışmadığında bir uygulama kullanıcıya kolayca rahatsızlık verebilir. ActionScript 2.0'da belirli bir mesajla istisna atmak için özel işlevlerde mantık oluşturmanıza olanak sağlayan bir Error sınıfı vardır. Hata işleme, kullanıcı dostu bir uygulama oluşturulmasında kritik bir faktör olduğundan, ActionScript 3.0'da hataların yakalanması için genişletilmiş bir mimari vardır.

Not: Adobe Flash Platformu için ActionScript 3.0 Başvurusu 'nda, her yöntemdeki olası tüm istisnalar olmasa da birçok yöntem tarafından atılan istisnalar belgelenmiştir. Açıklamada, bir yöntemin fırlattığı istisnaların bazıları listense bile bir yöntem, sözdizimi hataları için veya yöntem açıklamasında açıkça bildirilmeyen başka sorunlar için bir istisna fırlatılabilir.

ActionScript 3.0 hata işleme öğeleri

ActionScript 3.0, hata işleme için arasında şunların da yer aldığı birçok aracı içerir:

  • Error sınıfları. ActionScript 3.0, hata nesneleri üretebilecek durumların kapsamını genişletmek için geniş bir Error sınıfı aralığına sahiptir. Her Error sınıfı, istem hatalarıyla (MemoryError koşulu gibi), kodlama hatalarıyla (ArgumentError koşulu gibi), ağ iletişimi ve iletişim hatalarıyla (URIError koşulu gibi) veya diğer durumlarla ilgili belirli hata koşullarının işlenmesine ve yanıtlanmasına yardımcı olur. Sınıfların her biriyle ilgili daha fazla bilgi almak için, bkz. Error sınıflarını karşılaştırma .

  • Daha az sessiz arıza Önceki Flash Player sürümlerinde, yalnızca throw deyimini açıkça kullandığınızda hatalar oluşturulup bildirilirdi. Yerel ActionScript yöntemleri ve özellikleri, Flash Player 9 ve üstü Flash çalışma zamanları için çalışma zamanı hataları fırlatır. Bu hatalar, bu istisnaların işlenmelerini meydana geldikleri zaman daha etkili yapmanızı ve daha sonra her birine ayrı ayrı ulaşmanızı sağlar.

  • Hata ayıklama sırasında görüntülenen hata mesajlarını temizleyin. Flash çalışma zamanının hata ayıklayıcı sürümünü kullandığınızda sorunlu kodlar veya durumlar dayanıklı hata mesajları oluşturur ve bu da belirli bir kod bloğunun başarısız olma nedenlerini kolayca tanımlamanıza yardımcı olur. Bu mesajlar, hataların daha etkili giderilmesini sağlar. Daha fazla bilgi için, bkz. Flash çalışma zamanlarının hata ayıklayıcı sürümleri .

  • Kesin hatalar, kullanıcılara net hata mesajlarının görüntülenmesine olanak sağlar. Önceki Flash Player sürümlerinde FileReference.upload() yöntemi, upload() çağrısı başarısız olduğunda bir false Boolean değeri döndürerek beş olası hatadan birini belirtirdi. ActionScript 3.0'da upload() yöntemini çağırdığınızda bir hata ortaya çıkarsa, son kullanıcılara daha doğru hata mesajları göstermenizi sağlayan dört belirli hata size yardımcı olur.

  • Daraltılmış hata işleme. Birçok yaygın durum için belirgin hatalar atılır. Örneğin ActionScript 2.0'de, bir FileReference nesnesi doldurulmadan önce, name özelliği null değerine sahip olur (böylece name özelliğini kullanabilmeniz veya görüntüleyebilmeniz için öncelikle bu değerin ayarlanmış olduğundan veya boş olmadığından emin olmanız gerekir). ActionScript 3.0'da, name özelliği doldurulmadan bu özelliğe erişmeyi denerseniz, Flash Player veya AIR uygulaması, değerin ayarlanmamış olduğunu size bildiren bir IllegalOperationError hatasını atar ve siz de try..catch..finally bloklarını kullanarak hatayı işleyebilirsiniz. Daha fazla bilgi için, bkz. try..catch..finally deyimlerini kullanma .

  • Önemli performans sorunlarının olmaması Hataları işlemek için try..catch..finally bloklarının kullanılması, önceki ActionScript sürümlerine göre çok daha az ek kaynak tüketir veya hiç ek kaynak tüketmez.

  • Belirli eşzamansız hata olayları için dinleyiciler oluşturmanıza olanak sağlayan bir ErrorEvent sınıfı. Daha fazla bilgi için, bkz. Hata olaylarını ve durumunu yanıtlama .

Hata işleme stratejileri

Kodunuzda hata işleme mantığı oluşturmasanız bile, uygulamanız sorun oluşturan bir durumla karşılaşmadığı sürece başarılı şekilde çalışabilir. Ancak hataları etkin şekilde işlemezseniz ve uygulamanız bir sorunla karşılaşırsa, kullanıcılarınız uygulamanızın neden başarısız olduğunu asla bilmez.

Uygulamanızda hata işlemeye yönelik çeşitli yöntemler vardır. Aşağıdaki listede, üç önemli hata işleme seçeneği özetlenmektedir:

  • try..catch..finally deyimlerini kullanma. Bu ifadeler ortaya çıktıkça senkronize hataları yakalar. Kod çalıştırmasının çeşitli düzeylerinde istisnaları yakalamak için, deyimlerinizi bir hiyerarşide yuvalayabilirsiniz. Daha fazla bilgi için, bkz. try..catch..finally deyimlerini kullanma .

  • Kendi özel hata nesnelerinizi oluşturma. Uygulamanızda, yerleşik hata türlerinin kapsamadığı belirli işlemleri izlemek üzere kendi özel hata nesnelerinizi oluşturmak için Error sınıfını kullanabilirsiniz. Daha sonra özel hata nesnelerinizde try..catch..finally deyimlerini kullanabilirsiniz. Daha fazla bilgi için, bkz. Özel hata sınıfları oluşturma .

  • Hata olaylarını yanıtlamak için olay dinleyicileri ve işleyicileri yazma. Bu stratejiyi kullanarak, try..'da fazla kod çoğaltmadan benzer olayları işlemenize olanak veren global hata işleyicileri oluşturabilirsiniz. catch..finally bloklarında çok sayıda kod kopyalamadan benzer olayları işlemenize olanak sağlayan genel hata işleyicileri oluşturabilirsiniz. Ayrıca bu yaklaşımı kullanarak eşzamansız hataları daha fazla yakalayabilirsiniz. Daha fazla bilgi için, bkz. Hata olaylarını ve durumunu yanıtlama .