Tim'in tartışmaya geç girişine cevap olarak (Lev'in ilk yorumlarından birini de ele alır).
Boost'a gönderildiğinde statekarda yıkıcılardan ayrılmasını savunanlardan biri olarak (gerçek kullanım örneğine dayanan, gerçek dünya ile etkileşim hakkında tartışma / G / Ç), Artırma'ya gönderildiğinde çıkış yapmanın sorunları olabileceğini kabul ediyorum yıkıcılarda mantık. David Abrahams, istisna güvenliği konusunda da şaşırtıcı bir şekilde ikna edici argümanlar yaptı. Bu nedenlerden ötürü Statechart, mantık yıkıcılara koymanızı gerektirmez - ancak normal tavsiyelerde bulunmanıza izin verir.
Sadece bir durumdan (statechart nesnesinin bir bütün olarak yok edilmemesi) bir geçişin parçası olarak çalışması gereken mantık ayrı bir çıkış () eylemine ayrılabilir (ve yapılması gereken bir kaynak temizliği varsa).
Etkin durumu (kaynakları) olmayan "ince" bir durum için, yalnızca gerçekleştirilecek giriş / çıkış eylemleri için, bu eylemleri ctor ve d'tor'da gerçekleştirebilir ve yapıcı ve yıkıcıların atmadığından emin olabilirsiniz. Onlar için hiçbir neden yok - RAII yapmak için bir durum yok - bu yerlerde hataların ele alınmasının uygun olayları ortaya koymasında kötülük yoktur. Yine de, harici durumu değiştiren çıkış eylemlerinin durum makinesi imhası üzerinde çalışmasını isteyip istemediğinizi düşünmeniz gerekebilir ve bu durumda bunların olmasını istemiyorsanız bunları çıkış eylemine sokabilirsiniz ...
Statechart, etkinleştirmeyi bir nesnenin somutlaştırılması olarak modeller; bu nedenle, kurucunuzda yapılacak gerçek iş / aktivasyon / somutlaştırma varsa ve durum girilemeyecek şekilde başarısız olursa, Statechart bunu bir istisna ile eşleştirme yeteneği vererek destekler Etkinlik. Bu durum, yığının çağrı yığını tabanlı bir çağırma modeli için yığının açılma biçimine benzer şekilde, istisna olayını işleyen bir dış durumu arayan durum hiyerarşisini çalıştıran bir şekilde ele alınır.
Bunların hepsi iyi belgelenmiştir - Dokümanları okumanızı ve denemenizi öneririm. "Yazılım kaynaklarını" temizlemek için yıkıcıları kullanmanızı ve "gerçek dünyadan çıkış eylemlerini" gerçekleştirmek için eylemlerden çıkmanızı öneririm.
İstisna yayılımının yalnızca olay çizelgelerinde değil, tüm olay odaklı ortamlarda bir sorun olduğunu da belirtmek gerekir. Hatalar ve hataları durum çizelgesi tasarımınıza dahil etmek ve dahil etmek en iyisidir ve yalnızca bunları başka bir yolla ele alamazsanız istisna eşlemesine başvurunuz. En azından benim için çalışıyor - ymmmv ....