Bliver en fejl fanget af Catch Block i Java?

1. Oversigt

I denne korte artikel skal vi vise, hvordan man korrekt fanger Java-fejl, og vi forklarer, når det ikke giver mening at gøre det.

For detaljeret information om Kan kastess i Java, se venligst vores artikel om undtagelseshåndtering i Java.

2. Fangstfejl

Siden den java.lang.Error klasse i Java arver ikke fra java.lang.Undtagelse, skal vi erklære Fejl basisklasse - eller det specifikke Fejl underklasse, vi gerne vil fange - i fangstopgørelsen for at fange den.

Derfor, hvis vi kører følgende test case, vil det bestå:

@Test (forventet = AssertionError.class) offentlig ugyldig nårError_thenIsNotCaughtByCatchException () {prøv {kast ny AssertionError (); } fange (Undtagelse e) {Assert.fail (); // fejl fanges ikke af fangstundtagelse}}

Følgende enhedstest forventer dog, at fangstopgørelsen får fat i fejlen:

@Test offentlig ugyldig nårError_thenIsCaughtByCatchError () {prøv {kast ny AssertionError (); } fange (Fejl e) {// fanget! -> testpas}}

Bemærk, at Java Virtual Machine kaster fejl for at indikere alvorlige problemer, hvorfra den ikke kan komme sig, såsom mangel på hukommelse og stackoverløb, blandt andre.

Dermed, vi skal have en meget, meget god grund til at fange en fejl!

3. Konklusion

I denne artikel så vi hvornår og hvordan Fejls kan fanges i Java. Kodeeksemplet kan findes i GitHub-projektet.


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