簡體   English   中英

在服務中引發異常時,哪種做法更好?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM