Vyvoliť výnimku vo voliteľnom prostredí Java 8
1. Úvod
V tomto výučbe si ukážeme, ako vyvolať vlastnú výnimku, keď Voliteľné is prázdny.
Ak chcete ísť hlbšie do Voliteľné, pozrite sa na nášho úplného sprievodcu tu.
2. Voliteľné.orElseThrow
Jednoducho povedané, ak je hodnota prítomná, potom je prítomný() by sa vrátil pravdaa volanie dostať () vráti túto hodnotu. Inak to hodí NoSuchElementException.
Existuje aj metóda orElseThrow (Dodávateľ výnimky dodávateľa) ktorá nám umožňuje poskytnúť vlastnú inštanciu výnimky. Táto metóda vráti hodnotu, iba ak je k dispozícii. V opačnom prípade vyvolá výnimku vytvorenú poskytnutým dodávateľom.
3. V akcii
Predstav si to máme metódu, ktorá vracia výsledok s možnou hodnotou null:
public String findNameById (String id) {return id == null? null: "example-name"; }
Teraz zavoláme naše findNameById (ID reťazca) metóda dvakrát a výsledok zabaľte do Voliteľné pomocou ofNullable (hodnota T) metóda.
Voliteľné poskytuje statickú továrenskú metódu na vytváranie nových inštancií. Táto metóda sa nazýva ofNullable (hodnota T). Potom môžeme zavolať aleboElseThrow.
Správanie môžeme overiť vykonaním tohto testu:
@Test public void whenIdIsNull_thenExceptionIsThrown () {assertThrows (InvalidArgumentException.class, () -> Optional .ofNullable (personRepository.findNameById (null)) .orElseThrow (InvalidArgumentException :: new)); }
Podľa našej implementácie findNameById vráti sa nulový. Takže nový InvalidArgumentException bude vyhodený z aleboElseThrow metóda.
Túto metódu môžeme nazvať nenulovým argumentom. Potom nedostaneme InvalidArgumentException:
@Test public void whenIdIsNonNull_thenNoExceptionIsThrown () {assertAll (() -> Optional .ofNullable (personRepository.findNameById ("id")) .orElseThrow (RuntimeException :: new)); }
4. Záver
V tomto rýchlom článku sme diskutovali o tom, ako vyvolať výnimku z Java 8 Voliteľné.
Ako vždy, zdrojový kód sme umiestnili na náš GitHub.