Wordt er een fout opgemerkt door Catch Block in Java?

1. Overzicht

In dit korte artikel laten we zien hoe u Java-fouten op de juiste manier kunt opsporen, en we zullen uitleggen wanneer dit geen zin heeft.

Voor gedetailleerde informatie over Gooibaars in Java, lees dan ons artikel over het afhandelen van uitzonderingen in Java.

2. Fouten opsporen

Sinds de java.lang.Error klasse in Java erft niet van java.lang.Exception, moeten we de Fout basisklasse - of het specifieke Fout subklasse die we willen vastleggen - in de catch-instructie om deze te vangen.

Daarom, als we de volgende testcase uitvoeren, zal deze slagen:

@Test (verwacht = AssertionError.class) public void whenError_thenIsNotCaughtByCatchException () {probeer {throw new AssertionError (); } catch (uitzondering e) {Assert.fail (); // fouten worden niet opgevangen door catch-uitzondering}}

De volgende unit-test verwacht echter dat de catch-instructie de fout opvangt:

@Test openbare leegte whenError_thenIsCaughtByCatchError () {probeer {gooi nieuwe AssertionError (); } catch (Error e) {// gevangen! -> test geslaagd}}

Houd er rekening mee dat de Java Virtual Machine genereert fouten om ernstige problemen aan te geven waarvan het niet kan herstellen, zoals een gebrek aan geheugen en stack-overflows, onder andere.

Dus, we moeten een heel, heel goede reden hebben om een ​​fout te ontdekken!

3. Conclusie

In dit artikel hebben we gezien wanneer en hoe Fouts kunnen worden gevangen in Java. Het codevoorbeeld is te vinden in het GitHub-project.


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