Ben Windows programcı değilim ama yazılım istisnalar gibi donanım istisnalar tedavisinde özel durum işleme yapılandırılmış kullanarak anlamına gelir geliyor bana:
- Kodunuz C ++ standart (Sıfırla bölme gibi) tanımsız veya uygulama tanımlı davranış üretir şey yapar.
- , Windows SEH etkinleştirilmiş olarak bu durumda bir istisna atar olduğunu tanımlar.
- Sen özel durumu yakalamak ve / veya sonlandırma işleyicisi yürütmek için bu gerçeği kullanıyor.
soruları sormak Yani, IMO, şunlardır:
- Programlama görev standart C ++ işleyemez bir doğa gerçekten var mı? (Veya yalnızca donanım istisna izin vererek ne elde etmek ölçülebilir aşağı bir şekilde işleyebilir).
- Gerçekten kod standart dışı gittiğinde eylemde gerekiyor mu?
- İlk etapta donanım istisnalar provoke etmeyecek şekilde kodunuzu yazabilir mi?
cevabı 'evet', 'evet', 'hayır', daha sonra yapılandırılmış özel durum işleme ihtiyaç vardır. Aksi halde bu durumda muhtemelen istiyorum bunu önlemek mümkün olabilir. durum korumalı kod yazma zor, bu yüzden daha güçlü istisna daha iyi sunabilir garanti eder. belki SEH ile sıfıra bölen Kod nothrow garantisi sunmamaktadır, belki yeniden tasarımı bir parça arayanlar bunu Duff verilerini vermeyin böylece zaman, bunu yapabilirdi. Bir fonksiyon başka nedenlerden dolayı istisnalar atmak zorunda kalırsa, o zaman da belki işler kötü hale getirebileceğini donanım tuzakları onları atma.
Kayda değer bir özel durum bellek ayırma olduğunu. Emin değilim .NET yapar, ancak linux tahsisi üzerinde sadece tahsisi için yeterli sanal adres alanı varsa başarısız olursa. Fiziksel bellek ilk kullanımda kararlıdır ve yeterli değilse bir donanım duruma neden olur edilir. Bellek ayırma olduğundan sözde başarısızlık üzerinde std :: bad_alloc atmak ve uygulama standardının bu gereksinimi uygulamak için başarısız, o olabilir yazılıma donanım istisna dönüştürme bazı durumlarda bu yapılacak doğru şey olduğunu olun. Ancak, bu donanım istisna (eğer nothrow sanıyordum rutinleri içinde dahil), beklenmedik yerlerde ortaya çıkabilir, bu nedenle hala linux çekirdek yerine atma döker neden olan, incelikle ele imkansız olabilir. Uygulamada, bir yazılım istisna yerine faydalı olacaktır tahsisi için yeterli sıklıkta yakın yapıcısını, kilitlenmesine tam olarak başlatıldığını alır şey.