std :: abort ve std :: exit (ve daha fazlası: std :: _ Exit, std :: quick_exit) sadece daha düşük seviyeli fonksiyonlardır. Bunları programa tam olarak ne yapmasını istediğinizi söylemek için kullanırsınız: hangi yıkıcıları (ve eğer) çağırmalı, başka hangi temizleme işlevlerini çağırmalı, hangi değeri döndürmeli vb.
std :: terminate daha yüksek seviyeli bir soyutlamadır: programda bir hata oluştuğunu ve herhangi bir nedenle bir istisna atarak işlemenin mümkün olmadığını belirtmek için (çalışma zamanı veya siz tarafından) çağrılır. Bunun gerekliliği, genellikle istisna mekanizmasının kendisinde hata oluştuğunda ortaya çıkar, ancak programınızın verilen hatanın ötesinde devam etmesini istemediğinizde bunu istediğiniz zaman kullanabilirsiniz. Std :: denir sonlandırmak zaman durumların tam listesini derlenmiş benim sonrası. Std :: terminate'in ne yapacağı belirtilmemiştir, çünkü onun kontrolü sizdedir. Herhangi bir işlevi kaydederek davranışı yapılandırabilirsiniz. Sahip olduğunuz sınırlamalar, işlevin hata sitesine geri dönememesi ve bir istisna yoluyla çıkamamasıdır, ancak teknik olarak mesaj pompanızı içeriden başlatabilirsiniz. İçeride yapabileceğiniz yararlı şeylerin listesi için diğer yazıma bakın .
Özellikle, std :: terminate'in, ele alınamayan atılan bir istisna nedeniyle std :: terminate çağrıldığı bağlamlarda bir istisna işleyicisi olarak kabul edildiğini ve istisnanın ne olduğunu kontrol edip C ++ kullanarak inceleyebileceğinizi unutmayın. 11 std :: rethrow_exception ve std :: current_exception kullanarak. Hepsi benim yazımda .