Har lite problem med att få programmet att fånga exceptions.
Kod: Markera allt
try{
int c = 3 / divisor; // divisor = 0
printf("C: %d\n", c );
}
catch(...)
{
printf("exception" );
}
Jag är rätt säker på jag i windows klarar av att fånga upp kod som *p = 0; *p = 0; vilket i linux ger ett nasty segment fault. Visst är det styggt, men ett operativ tittar väl INNAN man skriver/läser till minnet om det är ok? Har läst att det bästa sättet i linux är en signal-handler, men den kan ändock inte förhindra att processen tas ned.
Någon som har lust att förklara hur det fungerar under unix? :-) Skulle behöva bra exceptionhantering och skydd mot segfaults, div by zero pga en dynamisk kod som lätt kan smälla....vill fånga upp, rätta till, därefter gå vidare. Det hade gått att lösa om det fanns en funktion liknande den i windows ( is_god_read_ptr eller liknande där man kan kika om ett minnesområde är läs/skrivbart).
Om någon dessutom kan presentera assemblerkod för hur try / catch implementeras så skulle jag ju bli rackarns glad!!
Tack på förhand.