Bruke Java-påstander

1. Introduksjon

Java hevder nøkkelord lar utviklere raskt bekrefte visse forutsetninger eller tilstanden til et program.

I denne artikkelen, vi tar en titt på hvordan du bruker Java hevder nøkkelord.

2. Historie om Java-påstander

Java hevder nøkkelord ble introdusert i Java 1.4, så det har eksistert en god stund. Imidlertid er det fortsatt et lite kjent nøkkelord som kan redusere kjeleplaten drastisk og gjøre koden vår mer lesbar.

For eksempel, ofte i koden vår, trenger vi å bekrefte visse forhold som kan forhindre at søknaden vår fungerer som den skal. Vanligvis skriver vi noe sånt som dette:

Tilkobling conn = getConnection (); if (conn == null) {throw new RuntimeException ("Connection is null"); }

Ved å bruke påstander kan vi fjerne hvis og kaste uttalelse med en singel hevder uttalelse.

3. Aktivere Java-påstander

Fordi Java-påstander bruker hevder nøkkelord, det er ingen biblioteker som trengs eller pakker å importere.

Vær oppmerksom på at det før Java 1.4 var helt lovlig å bruke ordet "assert" for å navngi variabler, metoder osv. Dette kan potensielt skape et navnekollisjon når du bruker en eldre kode med nyere JVM-versjoner.

Derfor, for bakoverkompatibilitet, JVM deaktiverer påstandsvalidering som standard. De må være aktivert eksplisitt ved hjelp av enten -aktiveringskoder kommandolinjeargument, eller dens stenografi -ea:

java -ea com.baeldung.assertion.Assertion

I dette eksemplet har vi aktivert påstander for alle klasser.

Vi kan også aktivere påstander for spesifikke pakker og klasser:

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

Her har vi aktivert påstander for alle klassene i com.baeldung.asstion pakke.

På samme måte kan de deaktiveres for spesifikke pakker og klasser ved hjelp av -deaktiveroppsett kommandolinjeargument, eller dens stenografi -da. Vi kan også bruke alle disse fire argumentene sammen.

4. Bruke Java-påstander

For å legge til påstander, bare bruk hevder nøkkelord og gi det et boolsk tilstand:

public void setup () {Connection conn = getConnection (); hevder conn! = null; }

Java gir også en andre syntaks for påstander som tar en streng, som vil bli brukt til å konstruere Påstand Feil hvis en blir kastet:

public void setup () {Connection conn = getConnection (); assert conn! = null: "Connection is null"; }

I begge tilfeller kontrollerer koden at en forbindelse til en ekstern ressurs returnerer en ikke-null verdi. Hvis den verdien er null, vil JVM kaster automatisk en Påstand Feil.

I det andre tilfellet vil unntaket ha tilleggsdetaljene som vil vises i stabelsporet og kan hjelpe til med å feilsøke problemet.

La oss ta en titt på resultatet av å kjøre klassen vår med påstander aktivert:

Unntak i tråden "main" java.lang.AssertionError: Connection is null at com.baeldung.assertion.Assertion.setup (Assertion.java:15) at com.baeldung.assertion.Assertion.main (Assertion.java:10)

5. Håndtering av en Påstand Feil

Klassen Påstand Feil strekker Feil, som i seg selv strekker seg Kastbar. Dette betyr at Påstand Feil er et ukontrollert unntak.

Derfor er ikke metoder som bruker påstander påkrevd for å erklære dem, og videre ringekode bør ikke prøve å fange dem.

Påstand Feil er ment å indikere uopprettelige forhold i et program, så prøv aldri å håndtere dem eller prøv å gjenopprette.

6. Beste praksis

Det viktigste å huske på påstander er at de kan deaktiveres, altså antar aldri at de blir henrettet.

Husk derfor følgende ting når du bruker påstander:

  • Se alltid etter nullverdier og tomme Ekstrautstyr der det er aktuelt
  • Unngå å bruke påstander for å kontrollere innganger i en offentlig metode, og bruk i stedet et ukontrollert unntak som f.eks IllegalArgumentException eller NullPointerException
  • Ikke kaller metoder under påstandsbetingelser, og tilordne i stedet resultatet av metoden til en lokal variabel og bruk den variabelen med hevder
  • Påstander er gode for steder i koden som aldri vil bli utført, for eksempel misligholde tilfelle av en bytte om uttalelse eller etter en løkke som aldri blir ferdig

7. Konklusjon

Java hevder nøkkelord har vært tilgjengelig i mange år, men er fortsatt et lite kjent trekk ved språket. Det kan bidra til å fjerne mange kokerplater, gjøre koden mer lesbar og hjelpe til med å identifisere feil tidlig i programutviklingen.

Bare husk at påstander ikke er aktivert som standard, så anta aldri at de vil bli utført når de brukes i koden.

Som alltid er hele kildekoden tilgjengelig på GitHub.


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