Java8のオプションで例外をスローする
1. 序章
このチュートリアルでは、オプション i sが空の場合にカスタム例外をスローする方法を示します。
オプションについて詳しく知りたい場合は、こちらのガイド全体をご覧ください。
2. Optional.orElseThrow
簡単に言えば、値が存在する場合、 isPresent()は true を返し、 get()を呼び出すとこの値が返されます。 それ以外の場合は、NoSuchElementExceptionをスローします。
方法もあります
3. 動作中
null許容の結果を返すメソッドがあると想像してください:
public String findNameById(String id) {
return id == null ? null : "example-name";
}
次に、 findNameById(String id)メソッドを2回呼び出し、 ofNullable(T value)メソッドを使用して結果をOptionalでラップします。
オプションは、新しいインスタンスを作成するための静的ファクトリメソッドを提供します
このテストを実行することで、動作を確認できます。
@Test
public void whenIdIsNull_thenExceptionIsThrown() {
assertThrows(InvalidArgumentException.class, () -> Optional
.ofNullable(personRepository.findNameById(null))
.orElseThrow(InvalidArgumentException::new));
}
私たちの実装によると、findNameByIdはnullを返します。 したがって、新しいInvalidArgumentExceptionはまたはElseThrowメソッドからスローされます。
null以外の引数を使用してこのメソッドを呼び出すことができます。 そうすると、 InvalidArgumentException:は発生しません。
@Test
public void whenIdIsNonNull_thenNoExceptionIsThrown() {
assertAll(() -> Optional
.ofNullable(personRepository.findNameById("id"))
.orElseThrow(RuntimeException::new));
}
4. 結論
このクイック記事では、Java8から例外をスローする方法について説明しました。
いつものように、ソースコードをGitHubに配置します。