Korištenje Java tvrdnji

1. Uvod

Java tvrditi ključna riječ omogućuje programerima da brzo provjere određene pretpostavke ili stanje programa.

U ovom članku, pogledati ćemo kako koristiti Javu tvrditi ključna riječ.

2. Povijest Java tvrdnji

Java tvrditi ključna riječ uvedena je u Javi 1.4, tako da postoji već duže vrijeme. Međutim, ona ostaje malo poznata ključna riječ koja može drastično smanjiti okvir i učiniti naš kôd čitljivijim.

Na primjer, često u našem kodu moramo provjeriti određene uvjete koji bi mogli spriječiti da naša aplikacija radi ispravno. Obično bismo napisali nešto poput ovoga:

Veza conn = getConnection (); if (conn == null) {throw new RuntimeException ("Veza je null"); }

Pomoću tvrdnji možemo ukloniti ako i bacanje izjava s jednim tvrditi izjava.

3. Omogućavanje Java tvrdnji

Budući da Java tvrdnje koriste tvrditi ključna riječ, nisu potrebne knjižnice ili paketi za uvoz.

Imajte na umu da je prije Java 1.4 bilo potpuno legalno upotrebljavati riječ „assert“ za imenovanje varijabli, metoda itd. To potencijalno stvara sukob u imenovanju kada se koristi stariji kôd s novijim verzijama JVM-a.

Stoga, za povratnu kompatibilnost, JVM prema zadanim postavkama onemogućava provjeru valjanosti tvrdnji. Moraju biti izričito omogućeni pomoću bilo kojeg -enableassertions argument naredbenog retka ili njegova skraćenica -ea:

java -ea com.baeldung.assertion.Assertion

U ovom smo primjeru omogućili tvrdnje za sve razrede.

Također možemo omogućiti tvrdnje za određene pakete i klase:

java -ea: com.baeldung.assertion ... com.baeldung.assertion.Assertion

Ovdje smo omogućili tvrdnje za sve razrede u com.baeldung.assertion paket.

Isto tako, mogu se onemogućiti za određene pakete i klase pomoću -nemoguće tvrdnje argument naredbenog retka ili njegova skraćenica -da. Također možemo koristiti sva četiri ova argumenta zajedno.

4. Korištenje Java Assertions

Da biste dodali tvrdnje, jednostavno koristite tvrditi i dodajte joj a boolean stanje:

postavljanje javne praznine () {Connection conn = getConnection (); tvrditi conn! = null; }

Java također pruža drugu sintaksu za tvrdnje koja uzima niz koji će se koristiti za konstrukciju AssertionError ako se baci:

postavljanje javne praznine () {Connection conn = getConnection (); potvrditi conn! = null: "Veza je null"; }

U oba slučaja kod provjerava daje li veza s vanjskim resursom ne-null vrijednost. Ako je ta vrijednost null, JVM će automatski baci AssertionError.

U drugom slučaju, iznimka će imati dodatne detalje koji će se prikazati u tragu steka i koji mogu pomoći u rješavanju problema.

Pogledajmo rezultat izvođenja naše klase s omogućenim tvrdnjama:

Iznimka u niti "main" java.lang.AssertionError: Veza je nula na com.baeldung.assertion.Assertion.setup (Assertion.java:15) na com.baeldung.assertion.Assertion.main (Assertion.java:10)

5. Rukovanje an AssertionError

Razred AssertionError proteže se Pogreška, koji se sam proteže Bacljivo. Ovo znači to AssertionError je neprovjerena iznimka.

Stoga metode koje koriste tvrdnje nisu potrebne da bi ih deklarirale, a daljnji pozivni kod ne bi ih trebao pokušavati uhvatiti.

AssertionErrors su namijenjeni ukazivanju na nepopravljive uvjete u aplikaciji, pa ih nikada nemojte pokušavati riješiti niti pokušavati oporavak.

6. Najbolji primjeri iz prakse

Najvažnije je imati na umu kod tvrdnji da ih se može onemogućiti nikad ne pretpostavljajte da će biti pogubljeni.

Stoga imajte na umu sljedeće stvari kada koristite tvrdnje:

  • Uvijek provjerite jesu li null vrijednosti prazne Opcionalni gdje je to prikladno
  • Izbjegavajte korištenje tvrdnji za provjeru unosa u javnu metodu i umjesto toga koristite neprovjerenu iznimku kao što je IlegalArgumentException ili NullPointerException
  • Nemojte pozivati ​​metode u uvjetima tvrdnje, već umjesto toga rezultat metode dodijelite lokalnoj varijabli i koristite je s tvrditi
  • Tvrdnje su izvrsne za mjesta u kodu koja se nikada neće izvršiti, poput zadano slučaj a sklopka izjava ili nakon petlje koja nikad ne završava

7. Zaključak

Java tvrditi ključna riječ dostupna je dugi niz godina, ali ostaje malo poznata značajka jezika. To vam može pomoći ukloniti puno standardnih kodova, učiniti ga čitljivijim i pomoći u prepoznavanju pogrešaka u ranom razvoju programa.

Sjetite se samo da tvrdnje nisu omogućene prema zadanim postavkama, zato nikada ne pretpostavljajte da će se izvršiti kada se koriste u kodu.

Kao i uvijek, puni izvorni kod dostupan je na GitHub-u.