Slide 27
Slide 27 text
Result 型のエラー型 E に何を指定するか?
1. Exceptionインスタンス
既存の例外ベースのコードとの互換性を保つ
unwrap()時に例外を再度投げる実装も可能
2. カスタムのドメインエラー型
ドメイン層でビジネスロジックに特化する
失敗の種類をEnumで定義
失敗ケースをパターンマッチして処理を分岐できる
enum UserError {
NotFound,
InsufficientBalance,
InvalidInput,
}
$result = $userService->findById($userId);
if ($result->isErr()) {
// エラー処理
match ($result->unwrapErr()) {
UserError::NotFound => $this->handleUserNotFound(),
UserError::InsufficientBalance => $this->handleInsufficientBalance(),
UserError::InvalidInput => $this->handleInvalidInput(),
};
}
27/34