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.


$config[zx-auto] not found$config[zx-overlay] not found