我不知道在这些位置的 else 句子中还能放什么



在这个方法中,我可以在else语句中写什么而不会出现错误或异常
此代码使用Java编写,并使用mongodb我想从workOrder中添加对象并检查是否为空,我想检查id是否为空,但如果workOrder或id为空,我不知道我可以返回

public TaskDataDTO save(TaskDataDTO taskDataDTO,String WorkOrderId) {
if(WorkOrderId!=null) {
taskDataDTO.setWorkOrderId(WorkOrderId);
Optional<WorkOrderDTO> workOrderDTO=workOrderRepository.findById(WorkOrderId).map(workOrderMapper::toDto);
if(workOrderDTO!=null)
{
log.debug("Request to save TaskData : {}", taskDataDTO);
taskDataDTO.setWorkOrderDTO(workOrderDTO);
TaskData taskData = taskDataMapper.toEntity(taskDataDTO);
taskData = taskDataRepository.save(taskData);
return taskDataMapper.toDto(taskData);
}
else {
//what can i write here

}

}
else{
//what can i write here
}
}

在调用该方法时需要处理异常,但这对您的情况更安全:

public TaskDataDTO save(TaskDataDTO taskDataDTO,String WorkOrderId) throws Exception {
if(WorkOrderId!=null) {
taskDataDTO.setWorkOrderId(WorkOrderId);
Optional<WorkOrderDTO> workOrderDTO=workOrderRepository.findById(WorkOrderId).map(workOrderMapper::toDto);
if(workOrderDTO!=null)
{
log.debug("Request to save TaskData : {}", taskDataDTO);
taskDataDTO.setWorkOrderDTO(workOrderDTO);
TaskData taskData = taskDataMapper.toEntity(taskDataDTO);
taskData = taskDataRepository.save(taskData);
return taskDataMapper.toDto(taskData);
}
else {
throw new java.util.NoSuchElementException("The work order was not found");
}

}
else{
throw new IllegalArgumentException("WorkOrderId cannot be null");
}
}

一个Spring DataCrudRepository将永远不会从findById(ID)返回null。您将始终得到一个Optional,它将包含具有匹配ID的实体,或者它将为空。我将完全删除workOrderDTO != null检查。

如果你的save方法需要一个非空的WorkOrderId,我会在方法的开始断言这一点。例如,您可以使用java.util.Objects.requireNonNull(WorkOrderId)

这两个更改简化了代码,因为现在没有分支了。它看起来像这样:

public TaskDataDTO save(TaskDataDTO taskDataDTO,String WorkOrderId) {
Objects.requireNonNull(WorkOrderId);
taskDataDTO.setWorkOrderId(WorkOrderId);
Optional<WorkOrderDTO> workOrderDTO=workOrderRepository.findById(WorkOrderId).map(workOrderMapper::toDto);
log.debug("Request to save TaskData : {}", taskDataDTO);
taskDataDTO.setWorkOrderDTO(workOrderDTO);
TaskData taskData = taskDataMapper.toEntity(taskDataDTO);
taskData = taskDataRepository.save(taskData);
return taskDataMapper.toDto(taskData);
} 

这假设您的taskDataDTO可以为workOrderDTO处理一个空的Optional。如果不能,您可能需要ifPresent()检查。您可能还需要考虑将WorkOrderDTO传递给TaskDataDTO而不是Optional<WorkOrderDTO>

最新更新