Dela via


Undantagshantering (felhantering)

Undantag kan initieras av maskinvara eller programvara och kan inträffa i kernelläge samt kod i användarläge. Strukturerad undantagshantering ger en enda mekanism för hantering av kernelläge och användarlägesfel.

Körningen av vissa instruktionssekvenser kan resultera i undantag som initieras av maskinvara. En åtkomstöverträdelse genereras till exempel av maskinvaran när en process försöker läsa från eller skriva till en virtuell adress som den inte har rätt åtkomst till.

Händelser som kräver undantagshantering kan också inträffa under körningen av en programvarurutin (till exempel när ett ogiltigt parametervärde anges). När detta inträffar kan en tråd initiera ett undantag explicit genom att anropa funktionen RaiseException. Med den här funktionen kan den anropande tråden ange information som beskriver undantaget.

Ett undantag kan vara kontinuerbart eller okontinuerligt. Ett icke-kontinuerligt undantag uppstår när händelsen inte kan fortsätta i maskinvaran, eller om fortsättningen inte är meningsfull. Ett icke-kontinuerligt undantag avslutar inte programmet. Därför kan ett program fånga undantaget och köra. Ett icke-kontinuerligt undantag uppstår dock vanligtvis till följd av en skadad stack eller andra allvarliga problem, vilket gör det svårt att återställa från undantaget.