undantag
Ett undantag (förkortning för "exceptionell händelse") är ett fel eller en oväntad händelse som inträffar när a program körs. När ett undantag inträffar avbryter det flödet av programmet. Om programmet kan hantera och bearbeta undantaget kan det fortsätta att köras. Om ett undantag inte hanteras kan programmet tvingas sluta.
Flera olika programmeringsspråk stödja undantag, även om de används på olika sätt. Till exempel är undantag en integrerad del av java språk och är ofta för att styra flödet av ett program. Java innehåller en undantag klass, som har dussintals underklasser, till exempel TimeoutException, UserExceptionoch IO-undantag. Underklasser som IO-undantag innehåller mer specifika undantag som FileNotFoundException och CharacterCodingException som kan "kastas" om en fil inte hittas eller teckenkodning av en sträng känns inte igen.
Andra språk använder bara undantag för att fånga grundläggande runtime-fel, till exempel felallokering minne eller systemnivåfel. Till exempel, a C + + programmet kan kasta dåligt_alloc undantag när minnet inte kan allokeras och systemfel undantag när operativsystem ger ett fel.
Undantagshantering
Ett välskrivet datorprogram söker efter undantag och hanterar dem på lämpligt sätt. Detta betyder utvecklare måste kontrollera sannolika undantag och skriva koda att bearbeta dem. Om ett program hanterar undantag väl kan oväntade fel upptäckas och hanteras utan kraschar programmet.
Undantag "kastas" när de sedan inträffar och "fångas" av någon annan kod i programmet. De kan kastas uttryckligen med hjälp av kasta uttalande eller implicit inom ett prova klausul. Nedan följer ett exempel på "försök / fånga" syntax i Java. Följande kod försöker dela med noll, men kastar en Aritmetikundantag undantag och returnerar 0 som resultat.
1. int a = 11;
2. int b = 0;
3. int resultat = 0;
4. prova {
5. int c = a / b;
6. resultat = c;
7.} fånga (ArithmeticException ex) {
8. resultat = 0;
9.}
10. returnera resultatet;
Ett undantag kastas på rad 5 (när 11 divideras med 0), så resten av försöksuttrycket (rad 6) körs inte. Istället fångas undantaget på rad 7 och resultatet 0 returneras.