[英]Which practice is better when throwing an exception in a service?
我正在研究 Spring Boot CRUD RESTful API 並且我正在嘗試定義做某些事情的最佳方式,例如:
這是我的 id 端點服務列表用戶:
@Service
public class DetailUserService {
@Autowired
UserRepository repository;
public Optional<User> listUser(Long id) {
Optional<User> user = repository.findById(id);
if (!user.isPresent()) {
throw new UserNotFoundException(id);
} else {
return repository.findById(id);
}
}
}
這是另一種寫法:
@Service
public class DetailUserService {
@Autowired
UserRepository repository;
public User listUser(Long id) {
return repository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));
}
}
兩種方式都有效,但我怎么知道哪個更好?
使用java-8
對於更少的代碼和更易讀的代碼來說總是一個更好的選擇。
您可以使用您提到的以下類型作為您的第二個選項。 使用Optional.orElseThrow()
方法代表了isPresent()-get()
對的另一種優雅替代方案
您可以在這里找到更多信息https://dzone.com/articles/using-optional-correctly-is-not-optional
@Service
public class DetailUserService {
@Autowired
UserRepository repository;
public User listUser(Long id) {
return repository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.