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.