c ++ - Er der kun undtagelsesfejl, der kun opstår i debuggeren?

Indlæg af Hanne Mølgaard Plasc

Problem



I et program kaldte jeg ved et uheld closeHandle() to gange på et mutex-håndtag (lukning af håndtaget, der allerede var lukket).


Når jeg kørte koden i debuggeren, modtog jeg undtagelsesfejl An invalid HANDLE was specified. som forventet.


Hvis du kører programmet 'normalt' som en selvstændig (uden for debuggeren) vises undtagelsen dog ikke eller nogen anden fejl. Programmet ser ud til at køre normalt.


Er dette bare en indstilling i Visual Studio .NET 2003 eller er der mere bagved det?

Bedste reference


Dokumentationen hedder: [3]



  Hvis applikationen kører under en debugger, vil funktionen kaste en undtagelse, hvis den modtager enten en håndteringsværdi, der ikke er gyldig eller en pseudo-handle-værdi. Dette kan ske, hvis du lukker et håndtag to gange, eller hvis du kalder CloseHandle på et håndtag, der returneres af FindFirstFile-funktionen, i stedet for at ringe FindClose-funktionen.