זרוק חריג באופציה ב- Java 8

1. הקדמה

במדריך זה אנו נראה כיצד לזרוק חריג מותאם אישית כאשר אופציונאלי אניס ריק.

אם אתה רוצה להעמיק יותר אופציונאלי, עיין במדריך המלא שלנו כאן.

2. Optional.orElseThrow

במילים פשוטות, אם הערך קיים, אז isPresent () יחזור נָכוֹן, וקורא לקבל() יחזיר ערך זה. אחרת, זה זורק NoSuchElementException.

יש גם שיטה orElseThrow (ספק חריג ספק) המאפשר לנו לספק מופע חריג מותאם אישית. שיטה זו תחזיר ערך רק אם היא קיימת. אחרת, זה יזרוק חריג שנוצר על ידי ספק מסופק.

3. בפעולה

דמיין ש יש לנו שיטה שמחזירה תוצאה בטלה:

ציבורי מחרוזת findNameById (מזהה מחרוזת) {return id == null? null: "שם לדוגמא"; }

עכשיו אנחנו קוראים לנו findNameById (מזהה מחרוזת) שיטה פעמיים ועוטפים את התוצאה עם אופציונאלי באמצעות ofNullable (ערך T) שיטה.

אופציונאלי מספק שיטת מפעל סטטית ליצירת מופעים חדשים. שיטה זו נקראת ofNullable (ערך T). ואז נוכל להתקשר orElseTrow.

אנו יכולים לאמת את ההתנהגות על ידי הפעלת בדיקה זו:

@Test ציבורי בטל כאשרIdIsNull_thenExceptionIsThrown () {assertThrows (InvalidArgumentException.class, () -> Optional .ofNullable (personRepository.findNameById (null)) .orElseThrow (InvalidArgumentException :: new); }

על פי היישום שלנו, findNameById יחזור ריק. אז החדש InvalidArgumentException ייזרק מה- orElseTrow שיטה.

אנו יכולים לקרוא לשיטה זו בעזרת טיעון שאינו אפס. ואז לא נקבל InvalidArgumentException:

@Test הציבור בטל כאשרIdIsNonNull_thenNoExceptionIsThrown () {assertAll (() -> אופציונלי .ofNullable (personRepository.findNameById ("id")) .orElseThrow (RuntimeException :: חדש)); } 

4. מסקנה

במאמר מהיר זה דנו כיצד לזרוק חריג מ- Java 8 אופציונאלי.

כמו תמיד, שמנו את קוד המקור ב- GitHub שלנו.


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