Skillnaden Mellan Kontrollerat Undantag Och Körtidsundantag

Skillnaden Mellan Kontrollerat Undantag Och Körtidsundantag
Skillnaden Mellan Kontrollerat Undantag Och Körtidsundantag

Video: Skillnaden Mellan Kontrollerat Undantag Och Körtidsundantag

Video: Skillnaden Mellan Kontrollerat Undantag Och Körtidsundantag
Video: Kör och vilotider del 1 2024, April
Anonim

Kontrollerat undantag vs Runtime-undantag

Undantag är speciella typer av händelser som kan störa det normala programflödet. Namnundantaget kommer från”exceptionell händelse”. Att kasta ett undantag är processen att skapa ett undantagsobjekt och överlämna det till runtime-systemet. När runtime-systemet tar emot undantagsobjektet kommer det att försöka hitta någon som hanterar det i samtalsstacken genom att korsa det i omvänd ordning (där metoderna kallades). Körningssystemet lyckas om det hittar en metod med en undantagshanterare. Undantagshanteraren är ett kodblock som officiellt kan hantera nämnda undantag. Om runtime-systemet hittar en lämplig hanterare skickas undantagsobjektet till hanteraren. Detta kallas fånga undantaget. Men om undantaget inte kan hanteras avslutas programmet. I Java,undantag ärver från Throwable-klassen. Kontrollerade undantag är undantag som hanteringen genomförs av kompilatorn. Runtimeundantag är en typ av undantag som inte kontrolleras av kompilatorn.

Vad är ett kontrollerat undantag?

Kontrollerade undantag är antingen objekt av klassen java.lang.exception eller dess underklasser (utom java.lang. RuntimeException och dess underklasser). Markerade undantag "kontrolleras" vid tidpunkten för sammanställningen. Det betyder att programmeraren måste antingen fånga eller kasta dessa undantag, annars skulle kompileringen klaga (orsakar ett kompilatorfel). På grund av denna anledning är många kontrollerade undantag mycket välkända för programmerare. Till exempel är IOException och dess underklasser kontrollerade undantag, och när programmeraren har att göra med åtkomst till eller ändring av en fil kontrollerar kompilatorn att alla möjliga IOExceptions tas om hand av programmeraren.

Vad är ett Runtime-undantag?

Runtime Undantag består av java.lang. RuntimeException och alla dess underklasser. Teoretiskt sett tjänar de samma syfte som kontrollerade undantag och kan kastas eller hanteras som kontrollerade undantag, men hanteringen av dem verkställs inte av kompilatorn. Därför tillhör Runtime-undantag familjen av okontrollerade undantag. NullPointerException, NumberFormatEception, ClassCastException och ArrayIndexOutOfBoundsException är vanliga runtimeundantag i Java.

Vad är skillnaden mellan Kontrollerat undantag och Runtime-undantag?

Även om både kontrollerade undantag och runtime-undantag är oönskade förekomster under genomförandet av ett program, har de skillnaderna. Kontrollerad undantagshantering genomförs av kompilatorn, men undantag för runtime är inte. Därför måste kontrollerade undantag kastas eller hanteras för att koden ska kunna kompileras, men det finns inget sådant krav angående undantag för körning. Följaktligen tillhör runtimeundantag kategorin okontrollerade undantag tillsammans med fel.

Nackdelen med kontrollerade undantag är att programmeraren måste hantera det även om hon inte vet hur man gör det. Så om programmeraren bara kastar ett nytt undantag utan att lägga in originalet, kommer stackspåret som tillhör det ursprungliga undantaget att gå förlorat. Det är här runtimeundantag är till nytta. Eftersom alla undantag för körning kan hanteras på ett enda ställe kan programmerare skriva mindre mängd kod. Å andra sidan, eftersom kontrollerade undantag måste fångas, finns det ingen överraskning för programmeraren. Hon kommer alltid att veta vilket kontrollerat undantag som kan kastas med en viss metod. I motsats till detta kan olika undantag för körning kastas utan programmerarens vetskap.

Rekommenderas: