gpt4 book ai didi

java - 直接从函数调用(没有 new())分配变量会引发异常吗?

转载 作者:行者123 更新时间:2023-12-03 12:01:43 25 4
gpt4 key购买 nike

以下代码是一个大型项目的一部分。

概述是我正在尝试使用 Spring MVC 访问数据库。我想根据请求更新字段并发送关于数据库发回的值的响应。

代码:

@Override
@Transactional

public EmployeeResponse update(EmployeeRequest employeeRequest) {
Employee emp = new Employee();
UUID empId = UUID.fromString(employeeRequest.getId());
Employee foundEmployee = employeeRepository.findOne(empId);

if (foundEmployee != null) {
foundEmployee.setAddress(employeeRequest.getAddress());
// similarly set 4 fields of foundEmployee
emp = employeeRepository.save(foundEmployee);
}
EmployeeResponse response = new EmployeeResponse();
response.setAddress(emp.getAddress());
// similarly set 4 fields of response

return response;

}

我发现 foundEmployee 没有 new Employee(),而 emp 有。我不确定,但我认为这会导致异常。我说得对吗?

另外,请告诉我当 foundEmployeenull 时我应该抛出什么异常。

附加信息 - 这是帮助显示的内容:

org.​springframework.​data.​repository.​CrudRepository

public T findOne(ID id)

Retrieves an entity by its id.

Parameters:
id - must not be null.

Returns:
the entity with the given id or null if none found

Throws:
IllegalArgumentException - if id is null

最佳答案

行内

Employee foundEmployee = employeeRepository.findOne(empId);

我们可以假定 EmployeeRepository.findOne() 将返回 Employee 的实例。这不会导致编译器错误,如果在运行时发生异常,它会在 findOne() 中。

关于在 null foundEmployee 的情况下您应该做什么,这实际上是您必须做出的设计决定。一种选择是让方法返回 null,让消费者知道传入的 EmployeeRequest 存在严重问题。

另一种选择是创建您自己的 Exception,然后在 null foundEmployee 的情况下抛出它。

更新:

鉴于您需要将一些东西传回您的 UI,另一种选择是创建一个空的 EmployeeReponse 对象并返回它:

EmployeeResponse response = new EmployeeResponse();
response.setAddress(null);
response.setName(null);

确保您的框架可以将 null 值编码为用户友好的内容,例如所有字段的空字符串。

关于java - 直接从函数调用(没有 new())分配变量会引发异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com