Eşzamanlı çalışma zamanı hatalarıyla çalışırken, hataları yakalamak için
try..catch..finally
deyimlerini kullanın. Bir çalışma zamanı hatası oluştuğunda, Flash çalışma zamanı bir istisna atar, başka bir deyişle, normal çalıştırmayı askıya alır ve Error türü için özel bir nesne oluşturur. Daha sonra Error nesnesi kullanılabilir birinci
catch
bloğuna atılır.
try
deyimi, hata oluşturma olasılığına sahip deyimleri kapsar. Her zaman
try
deyimiyle
catch
deyimini kullanırsınız.
try
ifade bloğundaki ifadelerden birinde hata algılanırsa o
try
ifadesine eklenen
catch
deyimleri çalıştırılır.
finally
deyimi,
try
bloğunda bir hata oluşsa da oluşmasa da yürütülecek olan deyimleri kapsar. Herhangi bir hata yoksa,
try
blok deyimleri tamamlandıktan sonra
finally
bloğundaki deyimler çalıştırılır. Bir hata varsa, ilk olarak
catch
deyimi sonra da
finally
bloğundaki deyimler çalıştırılır.
Aşağıdaki kod,
try..catch..finally
deyimlerinin kullanılmasına yönelik sözdizimini gösterir:
try
{
// some code that could throw an error
}
catch (err:Error)
{
// code to react to the error
}
finally
{
// Code that runs whether an error was thrown. This code can clean
// up after the error, or take steps to keep the application running.
}
Her
catch
deyimi, işlediği belirli bir istisna türünü tanımlar.
catch
deyimi yalnızca Error sınıfının alt sınıfları olan hata sınıflarını belirtebilir. Her
catch
deyimi sırayla denetlenir. Yalnızca fırlatılan hata türüyle eşleşen ilk
catch
ifadesi çalıştırılır. Başka bir deyişle, ilk olarak yüksek düzeydeki Error sınıfını ve sonra da Error sınıfının bir alt sınıfını denetlerseniz, yalnızca yüksek düzeydeki Error sınıfı eşleşir. Aşağıdaki kod bu noktayı gösterir:
try
{
throw new ArgumentError("I am an ArgumentError");
}
catch (error:Error)
{
trace("<Error> " + error.message);
}
catch (error:ArgumentError)
{
trace("<ArgumentError> " + error.message);
}
Önceki kod, şu çıktıyı görüntüler:
<Error> I am an ArgumentError
ArgumentError hatasını doğru şekilde yakalamak için, aşağıdaki kodun gösterdiği gibi, en özel hata türlerinin ilk sırada ve daha genel hata türlerinin daha aşağıda listelendiğinden emin olmanız gerekir:
try
{
throw new ArgumentError("I am an ArgumentError");
}
catch (error:ArgumentError)
{
trace("<ArgumentError> " + error.message);
}
catch (error:Error)
{
trace("<Error> " + error.message);
}
ActionScript API'sindeki birçok yöntem ve özellik, çalıştırılırken hatalarla karşılaşırsa çalışma zamanı hataları atar. Örneğin, aşağıdaki kodda gösterildiği gibi, yöntem ses akışını kapatamazsa, Sound sınıfındaki
close()
yöntemi bir IOError hatası atar:
var mySound:Sound = new Sound();
try
{
mySound.close();
}
catch (error:IOError)
{
// Error #2029: This URLStream object does not have an open stream.
}
Adobe Flash Platformu için ActionScript 3.0 Başvurusu
'nu öğrendikçe, her yöntemin açıklamasında ayrıntıyla anlatıldığı gibi hangi yöntemlerin istisna attığını fark edeceksiniz.