i Java finns det två typer av undantag:
1) markerad: är undantagen som kontrolleras vid kompileringstid. Om någon kod inom en metod kastar ett markerat undantag, måste metoden antingen hantera undantaget eller det måste ange undantaget med hjälp av kast nyckelord.
tänk till exempel på följande Java-program som öppnar filen på plats ”C:\test\a.txt” och skriver ut de tre första raderna., Programmet kompilerar inte, eftersom funktionen main() använder FileReader() och FileReader () kastar ett markerat undantag FileNotFoundException. Den använder också readLine() och close() metoder, och dessa metoder kastar också kontrollerat undantag IOException
Output:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown at Main.main(Main.java:5)
för att fixa ovanstående program måste vi antingen ange en lista över undantag med kast, eller vi måste använda try-catch block. Vi har använt kast i nedanstående program., Eftersom FileNotFoundException är en underklass av IOException, kan vi bara ange IOException i kastlistan och göra ovanstående program kompilator-felfri.
utgång: första tre rader fil ”C:\test\a.txt”
2) avmarkerat är de undantag som inte kontrolleras vid sammanställd tidpunkt. I C++ är alla undantag avmarkerade, så det tvingas inte av kompilatorn att antingen hantera eller ange undantaget. Det är upp till programmerarna att vara civiliserade och ange eller fånga undantagen.,
i Java undantag under fel och RuntimeException klasser är avmarkerade undantag, allt annat under throwable kontrolleras.
+-----------+ | Throwable | +-----------+ / \ / \ +-------+ +-----------+ | Error | | Exception | +-------+ +-----------+ / | \ / | \ \________/ \______/ \ +------------------+ unchecked checked | RuntimeException | +------------------+ / | | \ \_________________/ unchecked
beakta följande Java-program. Det sammanställer bra, men det kastar Aritmeticexception när den körs. Kompilatorn tillåter den att kompilera, eftersom ArithmeticException är ett okontrollerat undantag.,2b7cfd03″>
;
int
y =
10
;
int
z = y/x;
}
}
Output:
Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:5)Java Result: 1
Why two types?,
se okontrollerade undantag — kontroversen för detaljer.
ska vi göra våra undantag kontrolleras eller avmarkeras?
följande är den nedersta raden från Java-dokument
om en klient rimligen kan förväntas återhämta sig från ett undantag, gör det ett kontrollerat undantag. Om en klient inte kan göra något för att återhämta sig från undantaget, gör det till ett avmarkerat undantag
Java Corner på GeeksforGeeks
skriv kommentarer om du hittar något felaktigt, eller om du vill dela mer information om ämnet som diskuteras ovan.
uppmärksamhet läsare! Sluta inte lära dig nu., Få tag på alla viktiga Java Foundation och samlingar begrepp med grunderna i Java och Java Samlingar kurs på ett studentvänligt pris och bli industrin redo.