Aracılığıyla paylaş


Exception-Handler Söz Dizimi

çerçeve tabanlı özel durum işleyicisi oluşturmak için __try ve __except anahtar sözcükleri kullanılır. Aşağıdaki örnekte bir özel durum işleyicisinin yapısı gösterilmektedir.

__try 
{
    // guarded body of code 
 
} 
__except (filter-expression) 
{ 
    // exception-handler block 
 
}

__try bloğunun ve özel durum işleyici bloğunun ayraç ({}) gerektirdiğini unutmayın. bir __try bloğunun gövdesine veya özel durum işleyici bloğuna atlamak için goto deyimi kullanılmasına izin verilmez. Bu kural hem özel durum işleyicileri hem de sonlandırma işleyicileri için geçerlidir.

__try bloğu, özel durum işleyicisinin koruduğu korunan kod gövdesini içerir. bir işlevin herhangi bir sayıda özel durum işleyicisi olabilir ve bu özel durum işleme deyimleri aynı işlev içinde veya farklı işlevlerde iç içe yerleştirilebilir. __try bloğunda bir özel durum oluşursa sistem denetimi alır ve bir özel durum işleyicisi aramaya başlar. Bu aramanın ayrıntılı açıklaması için bkz. Özel Durum İşleme.

Özel durum işleyicisi yalnızca tek bir iş parçacığında oluşan özel durumları alır. Bu, bir __try bloğu CreateProcess veya CreateThread işlevine yönelik bir çağrı içeriyorsa, yeni işlem veya iş parçacığında oluşan özel durumlar bu işleyiciye gönderilmediği anlamına gelir.

Sistem, özel durum işlenene veya başka işleyici kalmayıncaya kadar özel durumun oluştuğu kodu koruyan her özel durum işleyicisinin filtre ifadesini değerlendirir. Filtre ifadesi aşağıdaki üç değerden biri olarak değerlendirilmelidir.

Değer Anlam
EXCEPTION_EXECUTE_HANDLER Sistem denetimi özel durum işleyicisine aktarır ve yürütme, işleyicinin bulunduğu yığın çerçevesinde devam eder.
EXCEPTION_CONTINUE_SEARCH Sistem bir işleyici aramaya devam eder.
EXCEPTION_CONTINUE_EXECUTION Sistem bir işleyici aramasını durdurur ve denetimi özel durumun oluştuğu noktaya döndürür. Özel durum devam edilemezse, bu bir EXCEPTION_NONCONTINUABLE_EXCEPTION özel durumuyla sonuçlanır.

 

Filtre ifadesi, özel durum işleyicisinin bulunduğu işlev bağlamında değerlendirilir, ancak özel durum farklı bir işlevde gerçekleşmiş olabilir. Bu, filtre ifadesinin işlevin yerel değişkenlerine erişebileceği anlamına gelir. Benzer şekilde, özel durum işleyici bloğu, bulunduğu işlevin yerel değişkenlerine erişebilir.

Daha fazla örnek için bkz. Özel Durum İşleyicisi Kullanma.

Filtre ifadeleri ve filtre işlevleri hakkında daha fazla bilgi için bkz. Çerçeve Tabanlı Özel Durum İşleme.