istisnası nasıl yakalanır? MSDN belirtimleri nedeniyle, CloseHandle
, bir hata ayıklayıcısının altında çalışırken geçersiz bir tanıtıcı geçirilirse bir Özel Durum atar.CloseHandle()
Temiz kod almak istediğim için onu yakalamak için bir kod ekledim. Ancak, işe yaramıyor, istisna yakalanmıyor.
#include <windows.h>
#include <tchar.h>
#include <exception>
/* omitted code */
CloseHandle(myHandle); // close the handle, the handle is now invalid
try {
success = CloseHandle(myHandle);
} catch (std::exception& e) {
_tprintf(TEXT("%s\n"), e.what());
} catch (...) {
_tprintf(TEXT("UNKNOWN\n"));
}
ben ayıklananları aşağıdaki iki hata alıyorum:
Birinci şans istisna: 0xC0000008: Geçersiz bir tanıtıcı belirtildi.
Yakalanmamış özel durum: 0xC0000008: Geçersiz bir tanıtıcı belirtildi.
Ben cevap vereyim catch deyimi önce kovuluyor beri ilk şansını istisna normal olduğunu düşünüyorum. Ancak, yakalanmamış istisna burada neyin yanlış olduğunu merak ediyor.
Yine de bu istisnayı atarsa, __try/__ dışında olsa bile, muhtemelen bu özel durumu ihlal etmeyi etkinleştirdiniz. Debug/Exceptions/Win32 İstisnaları menüsüne gidin ve c0000008 seçeneğini devre dışı bırakın Geçersiz bir tanıtıcı belirtildi. Tamam sonra Visual Studio'ya son vermeli. – user720594