Hoće li Catch Block u Javi uhvatiti pogrešku?

1. Pregled

U ovom kratkom članku pokazat ćemo kako pravilno hvatati Java pogreške i objasnit ćemo kada to nema smisla.

Za detaljne informacije o Bacljivos na Javi, pogledajte naš članak o rukovanju iznimkama u Javi.

2. Hvatanje pogrešaka

Budući da je java.lang.Pogreška klasa u Javi ne nasljeđuje od java.lang.Izuzetak, moramo proglasiti Pogreška osnovna klasa - ili specifična Pogreška potklasa koju bismo željeli uhvatiti - u izjavi catch kako bismo je uhvatili.

Stoga, ako pokrenemo sljedeći test, on će proći:

@Test (očekuje se = AssertionError.class) javna praznina kadaError_thenIsNotCaughtByCatchException () {try {throw new AssertionError (); } catch (Iznimka e) {Assert.fail (); // greška nije zahvaćena iznimkom catch}}

Sljedeći jedinični test, međutim, očekuje da će naredba catch uhvatiti pogrešku:

@Test public void whenError_thenIsCaughtByCatchError () {try {throw new AssertionError (); } catch (Pogreška e) {// uhvaćen! -> test prolaz}}

Imajte na umu da Java virtualni stroj baca pogreške kako bi ukazao na ozbiljne probleme od kojih se ne može oporaviti, kao što su, između ostalog, nedostatak memorije i preljev stacka.

Tako, moramo imati vrlo, vrlo dobar razlog da uhvatimo pogrešku!

3. Zaključak

U ovom smo članku vidjeli kada i kako Pogreškas mogu se uhvatiti na Javi. Primjer koda može se naći u projektu GitHub.


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