Vil en feil bli fanget av Catch Block i Java?
1. Oversikt
I denne korte artikkelen skal vi vise hvordan vi kan fange Java-feil, og vi vil forklare når det ikke er fornuftig å gjøre det.
For detaljert informasjon om Kastbars i Java, ta en titt på artikkelen vår om unntakshåndtering i Java.
2. Fange feil
Siden java.lang.Error klasse i Java arver ikke fra java.lang. unntak, må vi erklære Feil basisklasse - eller det spesifikke Feil underklasse vi vil fange - i fangstoppgaven for å fange den.
Derfor, hvis vi kjører følgende testsak, vil den bestå:
@Test (forventet = AssertionError.class) offentlig ugyldig nårError_thenIsNotCaughtByCatchException () {prøv {kast ny AssertionError (); } fange (Unntak e) {Assert.fail (); // feil fanges ikke av fangst unntak}}
Følgende enhetstest forventer imidlertid at fangstutsagnet vil fange feilen:
@Test offentlig ugyldig nårError_thenIsCaughtByCatchError () {prøv {kast ny AssertionError (); } fangst (feil e) {// fanget! -> testpass}}
Vær oppmerksom på at Java Virtual Machine kaster feil for å indikere alvorlige problemer som den ikke kan gjenopprette, som mangel på minne og stackoverløp, blant andre.
Og dermed, vi må ha en veldig, veldig god grunn til å ta feil!
3. Konklusjon
I denne artikkelen så vi når og hvordan Feils kan bli fanget i Java. Kodeeksemplet finnes i GitHub-prosjektet.